akjfal

[Programmers] 예상 대진표도움말 본문

알고리즘/programmers

[Programmers] 예상 대진표도움말

akjfal 2021. 6. 16. 00:34
// 부전승은 x
// A와 B를 포함한 가장 작은 2^n이 무엇인가?를 구해야한다.
// 어차피 2^n의 전 아니면 후다(위에서부터 내려왔을때)
// 맨 처음으로 달라지는 구간의 n값이다.
// n - 1
// 1. 2^n-1 과 A B비교
// 2. 같은 구간에 있다면 n-1
// 2-1. 둘다 2^n보다 크다면 a,b 둘다 -2^n
// 3. 다른 구간에 있다면 n+1값은 정답

class Solution
{
    public int solution(int n, int a, int b)
    {
        int answer = 1;
        n -= 1;
        while(n >= 0){
            boolean isA = Math.pow(2, n) < a;
            boolean isB = Math.pow(2, n) < b;
            if(isA == isB){
                if(isA == true && isB == true){
                    a -= Math.pow(2, n);
                    b -= Math.pow(2, n);
                }
                n -= 1;
            }else{
                answer = n + 1;
                break;
            }
        }
        return answer;
    }
}

조건만 생각하면 금방 푸는 문제다.

'알고리즘 > programmers' 카테고리의 다른 글

[Programmers] 수식 최대화  (0) 2021.06.17
[Programmers] 괄호 회전하기  (0) 2021.06.17
[Programmers] 게임 맵 최단거리  (0) 2021.06.16
프로그래머스 42583번 java  (0) 2021.01.15
프로그래머스 68645번 java  (0) 2021.01.14
Comments