본문 바로가기
일반 학습/코딩 테스트

[프로그래머스] 예상 대진표

by StelthPark 2022. 3. 21.

처리조건

풀이

1,2,3,4,5,6,7,8 참가자가 있으면 다음경기 때는 1,2중 아무나, 뭐 2가 내려오고 3,4중 4가 5,6중6이 이렇게 내려와서 다음경기를 진행하게 된다. 아래처럼 2씩 나누게 된 몫을 확인해보자 맨 아래 4와 8이 만나고 여기서 8은 7이나 상관없게 된다. 처리조건 아래를 잘 살펴보면 된다.

  • N : 21 이상 220 이하인 자연수 (2의 지수 승으로 주어지므로 부전승은 발생하지 않습니다.)

그렇다면 A,B를 받아서 2로 나누고 나눈수를 Math.ceil로 반올림하여 정수로 나타내고 while문을 돌려 a,b를 계속 바꿔주면서 이 둘이 일치할때 까지 돌린다.

코드는 굉장히 간단하지만 난이도2인 이유는 조건을 잘 생각해서 어떠한 규칙을 잘 찾아야하는 것 같다.

function solution(n,a,b)
{
    var answer = 0;

    while(a!==b){
        a= Math.ceil(a/2)
        b=Math.ceil(b/2)
        answer++
    }
    return answer
}

 

댓글