
아래 프로그래머스 로고를 클릭하면 해당 문제로 이동합니다 😀
시뮬레이션처럼 매 라운드를 만들면서 풀까 ... 했으나 그거보다 그룹화를 했을 때 두 번호가 언제 같은 그룹에 들어가는지를 확인해주는 아이디어를 이용했다.
매 라운드마다 참가자의 번호를 (현재 번호 + 1) // 2로갱신하면 된다.
결론적으로, 번호가 (현재 번호 + 1) // 2씩 줄어들면서 다음 라운드로 이동하고 이 두번호가 같아질 때 라운드를 리턴해주면 된다.
def solution(n, a, b):
result = 0
while a != b:
a = (a + 1) // 2
b = (b + 1) // 2
result += 1
return result
function solution(n, a, b) {
let result = 0;
while (a !== b) {
a = Math.ceil(a / 2);
b = Math.ceil(b / 2);
result += 1;
}
return result;
}
