본문 바로가기
백준 코딩테스트/실버

1057) 토너먼트 (C++)

by xortl98 2022. 6. 5.
728x90

 출처 

https://www.acmicpc.net/problem/1057

 

1057번: 토너먼트

김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를

www.acmicpc.net

 내 풀이 

#include<iostream>

using namespace std;

int roundNum = 0;
int result_Round = 0;
int Kim = 0, Lim = 0;
int main()
{
	cin >> roundNum >> Kim >> Lim;

	while (roundNum)
	{
		result_Round++;

		//조건이 맞아떨어지면 만남 
		if ((Kim % 2 == 0 && Kim == Lim + 1) || (Lim % 2 == 0 && Lim == Kim + 1))break;

		//만약 소수점으로 나눠떨어지면 1씩 더해주기 
		if (Kim % 2 != 0) Kim++;
		if (Lim % 2 != 0) Lim++;

		Kim /= 2;
		Lim /= 2;

		roundNum /= 2;
	}

	if (roundNum == 0) cout << -1;	//토너먼트에서 만나지 못함
	else cout << result_Round;
}

 해설

roundNum을 넣어 조건이 해당할 때까지 각 수를 2씩 나눠주면서 반복해주었다.

 느낀점 

Very Good 

'백준 코딩테스트 > 실버' 카테고리의 다른 글

5635) 생일 (C++)  (0) 2022.06.11
1748) 수 이어 쓰기 1 (C++)  (0) 2022.06.06
11931) 수 정렬하기 4 (C++)  (0) 2022.06.03
1158) 요세푸스 문제 (C++)  (0) 2022.06.03
2960) 에라토스테네스의 체 (C++)  (0) 2022.06.01