function solution(n, a, b) {
let cnt = 0;
while(true) {
if(a === b) break;
a = Math.ceil(a / 2);
b = Math.ceil(b / 2);
cnt += 1;
}
return cnt;
}
규칙만 찾으면 매우 간단한 문제이다.
1번부터 2개씩 짝지어서 만약 이긴다면 같은 라운드로 진출하게 된다.
예를 들어 1번과 2번과의 게임에서 이긴사람은 다음 라운드에 1번으로 진출하게 된다.
5번과 6번은 다음 라운드에 3번으로 진출하게 된다.
따라서 현재 게임을 진행중인 번호들은 홀수라면 n / 2 + 1, 짝수라면 n / 2 번으로 진출하게 된다.
홀수일경우 나머지가 발생하므로 +1을 하게되는데 Math.ceil()로 간편하게 해결해주었다.
'PS > Programmers' 카테고리의 다른 글
Programmers / Level 2 / 멀리 뛰기 / JS (0) | 2023.01.03 |
---|---|
Programmers / Level 2 / 점프와 순간 이동 / JS (0) | 2023.01.01 |
Programmers / Level 2 / 튜플 / JS (0) | 2022.12.29 |
Programmers / Level 2 / 구명보트 / JS (0) | 2022.12.29 |