예상 대진표

문제


문제 풀이

A 와 B의 차이는 1이면서 같은 대진에 있어야 만났을 때이다. 그렇게 계산을 하려면 diff 변수 하나와 둘 중 큰값이 짝수라면 같은 대진에 있다고 할 수있다. 

 

diff = Math.abs(a - b);
if (diff == 1 && Math.max(a, b) % 2 == 0) {
    return answer;
}

나의 답안

public static int solution(int n, int a, int b) {
    int answer = 1;
    int diff = 0;
    while (true) {
        diff = Math.abs(a - b);
        if (diff == 1 && Math.max(a, b) % 2 == 0) {
            return answer;
        }

        a = (a + 1) / 2;
        b = (b + 1) / 2;
        answer++;
    }
}

다른 답안

A-1, B-1 의 2진수를 xor로 계산하고 나온 결과 값 2진수의 길이를 반환한 결과이다. 비트 규칙에 대한 이해도가 높은 분이 써 놓은 코드라서 한번 남겨봅니다. 

class Solution
{
    public int solution(int n, int a, int b)
    {
        return Integer.toBinaryString((a-1)^(b-1)).length();
    }
}

'Programmers 문제풀이 > Lv.2' 카테고리의 다른 글

N개의 최소공배수  (0) 2023.03.31
점프와 순간이동  (0) 2023.03.31
구명보트  (0) 2023.03.31
가장 큰 수  (0) 2023.03.30
카펫  (0) 2023.03.30