문제 푼 날짜 : 2021-08-12
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12985
해당 라운드의 번호에서 다음 라운드 번호를 구했을 때, A, B가 값이 같아진다면 해당 라운드에서 맞붙게 되는 것이므로 값이 같아질 때까지 반복해 준다.
제한사항에서 N이 항상 2의 지수승으로 주어지기 때문에 a = (a + 1)/2 와 같이 값을 구할 수 있다.
N : 21 이상 220 이하인 자연수 (2의 지수 승으로 주어지므로 부전승은 발생하지 않습니다.)
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
while (a != b) {
a = (a + 1)/2;
b = (b + 1)/2;
answer++;
}
return answer;
}
쉽게 생각하는 연습도 필요하다.