[코딩테스트] 예상 대진표

florentyoon·2021년 8월 12일
0

코딩테스트

목록 보기
6/6

https://programmers.co.kr/learn/courses/30/lessons/12985?language=javascript

풀이 1. n명은 2의 승수다. 즉 2 몇승이 n인지 구하면 총 라운드 횟수가 나옴.
풀이 2. a와 b는 홀수 또는 짝수인데, 홀수라면 +1해서 짝수 / 2가 다음 라운드의 순서가 됨.
풀이 3. a와 b 수를 계속 2로 나누다보면 둘이 같아지는 지점이 있음. 그때가 서로 만나게 되는 때. 그 때의 라운드를 리턴하면 됨.

function solution(n,a,b)
{
    let answer = 1;    
    for(answer; answer <= Math.log2(n); answer++){
        a = (a % 2 == 0) && a/2 || (a+1)/2;
        b = (b % 2 == 0) && b/2 || (b+1)/2;  
        if( a == b ) break;
    }

    return answer;
}
profile
florentyoon의 IT 세상

0개의 댓글