티스토리 뷰
문제링크 : 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 |