백준 1057번 - 토너먼트

박진형·2021년 6월 27일
0

algorithm

목록 보기
25/111

문제 풀이

김지민의 번호와 임한수의 번호를 토대로 그림을 그려서 잘 보면 짝수 번호는 그 다음 라운드에서 절반이 되고 홀수 번호는 그 다음 라운드에서 절반 + 1이 된다.
그리고 만나서 서로 같이 경기를 치루면 둘의 번호는 같아진다.
그러므로 번호가 같아 질 때 까지 위의 규칙대로 while문을 돌려주면 된다.

문제 링크

boj/1057

소스코드

PS/1057.cpp

#include <iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<queue>

using namespace std;

int main() {
	int n, a, b;
	cin >> n >> a >> b;
	int cnt = 0;
	while (a != b)
	{
		if (a % 2)
		{
			a /= 2;
			a += 1;
		}
		else
		{
			a /= 2;
		}
		if (b % 2)
		{
			b /= 2;
			b += 1;
		}
		else
			b /= 2;
		cnt++;
	}
	cout << cnt;
}

0개의 댓글