티스토리 뷰

백준/실버

[백준 1057번] 토너먼트 (C++)

게임개발기원 2025. 3. 2. 21:42

문제링크 : https://www.acmicpc.net/problem/1057

#include <bits/stdc++.h>
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n, a, b, cnt = 0;
    cin >> n >> a >> b;

    while(a!=b)
    {
        a = (a+1)/2;
        b = (b+1)/2;
        cnt++;
    }

    cout << cnt;

    return 0;
}

 

각 값들을 2로 나누면서 같아지는 순간을 체크한다.

다만 단순히 2를 나누는 것이 아니라 1을 더해주어야 한다.

7, 8을 예시로 들면 7/2 = 3, 8/2 = 4 이기에 둘 다 같은 4를 반환하려면 1을 더해줄 필요가 있다.

(8/2 = 4, 9/2 = 4)

'백준 > 실버' 카테고리의 다른 글

[백준 10819번] 차이를 최대로 (C++)  (0) 2025.03.05
[백준 1063번] 킹 (C++)  (0) 2025.03.04
[백준 1058번] 친구 (C++)  (0) 2025.03.02
[백준 17291번] 새끼치기 (C++)  (0) 2024.07.19
[백준 17391번] 무한부스터 (C++)  (0) 2024.07.18
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함