n
게임 참가자 수 | 8 | 21 이상 220 이하인 자연수
a
참가자 번호 | 4 | N 이하인 자연수, A ≠ B
b
경쟁자 번호 | 7 | N 이하인 자연수, A ≠ B
처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번째 라운드에서 만나는지 return
참가자 2명씩 짝지어 진행되는 경기이므로, 현재 라운드에 n번 번호를 가진 사람이 다음 라운드에선 n/2를 올림한 값을 번호로 가지게 됨
2로 나눈값이 같다면 이번에 경기할 참가자이므로 이를 이용해서 구하면 됨
경기 | 1 vs 2 | 3 vs 4 | 5 vs 6 | 7 vs 8 |
---|---|---|---|---|
/2 값 | 0.5 ~ 1 => 1 | 1.5 ~ 2 => 2 | 2.5 ~ 3 => 3 | 3.5 ~ 4 => 4 |
import java.util.*;
class Solution{
public int solution(int n, int a, int b){
int round = 1;
while(true){
a = (int)Math.ceil(a/2.0);
b = (int)Math.ceil(b/2.0);
if(a==b)
break;
round++;
}
return round;
}
}
유익한 자료 감사합니다.