Algorithm

[010] 예상 대진표

JEE-JEEE 2024. 2. 19. 15:03

 


 

문제에서의 규칙은

1. 언제나 승리한다

2. 1, 2 -> 1 / 2, 3 -> 2 와 같이 한단계씩 증가한다

3. 두 수가 만날 때 멈춘다

 

정해진 끝이 없는 상태이기 때문에 while으로 맞추고, 다음으로는 해당하는 공식을 생각한다.

다음 문제의 경우 두 수의 다음 수고, 언제나 짝수이기 때문에 짝수에 해당하는 큰 수를 기준으로 나누고, 홀수의 경우 언제나 짝수 - 1이기때문에 나눈 수 + 1을 하면 된다. 다른 풀이로는 %를 해 나머지를 구하는 방법이 존재한다. 나는 후자를 선택함.

 

두 수가 나올 때까지 ans에 ++를 해서 올라가는 증감식을 선택하고, 두 수가 같을 때 증감을 마무리하고 해당하는 값을 리턴하면 끝!

 

    public int t04(int n, int a, int b)
    {
        int answer = 0;

        while ( true ){
            if ( a == b ){
                break;
            }

            // 1 2 -> 1
            // 3 4 -> 2
            // 5 6 -> 3
            a = a/2 + a%2;
            b= b/2 + b%2;
            answer ++;
        }

        return answer;
    }