TIL 66 | 자바스크립트로 알고리즘 (프로그래머스 예상대진표 JS)

Gom·2021년 4월 26일
1

Algorithm

목록 보기
35/48
post-thumbnail

문제 바로가기

문제요약

게임 참가자 수 N, 참가자 번호 A, 경쟁자 번호 B가 함수 solution의 매개변수로 주어질 때, 처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번째 라운드에서 만나는지 return 하는 solution 함수를 완성해 주세요. 단, A번 참가자와 B번 참가자는 서로 붙게 되기 전까지 항상 이긴다고 가정합니다.

접근방법

1-2번, 3-4번 참가자가 붙게 된다. 2로 나누어 떨어지는 값의 n-1번째 값과 만나게 되는 것이므로 Math.ceil()을 이용하여 올림 처리를 해주었다. a와 b가 붙게 되는 순간, 즉 같은 번호로 한 쌍이 되는 순간까지 라운드를 진행하며 cnt를 증가시키다가 둘이 같은 번호가 될 때 반복문 while을 종료하고 cnt를 출력한다.

정답코드

function solution(n,a,b)
{
    let cnt = 1;
    while(Math.ceil(a/2)!==Math.ceil(b/2)){
        a = Math.ceil(a/2);
        b = Math.ceil(b/2);
        cnt++;
    }
    
    return cnt;
}
profile
안 되는 이유보다 가능한 방법을 찾을래요

0개의 댓글