Algorithm

프로그래머스 :: 예상 대진표 (Java) 알고리즘 풀이

curioser 2021. 6. 2. 22:24

😃 || 정리

부전승이 따로 있지 않고 ,
참가자가 2의 제곱으로 주어지기 때문에 한 번 라운드가 끝날 때 마다
참가자가 이전라운드 참가자의 2분의 1로 줄어드는 것을 확인할 수 있었다.
처음에는 b와 a의 차이가 1일 때로 생각해서 풀었더니
정확도가 88점... 왜 일까 알고보니
a가 4, b가 5로 주어질 경우는 차이가 1이므로 내가 만든 풀이에선 라운드가 한번밖에 진행되지 않지만
사실은 라운드가 3번은 진행되어야 하는 것이었다.
그래서 a와 b가 같아지지 않을 때 까지로 조건을 변경해서 풀었더니 해결!

😃 || 풀이 방법

class Solution
{
    public int solution(int n, int a, int b)
    {
        int roundCnt = 0;
        while(a != b){
            roundCnt ++;

            a = nextCnt(a);
            b = nextCnt(b);
        }

        return roundCnt;
    }

    public int nextCnt (int turn) {
           return  turn/2 + turn%2;
    }

}