본문 바로가기
문제풀이/Programmers 문제풀이

[ 알고리즘 ] 코딩 - Programmers - 예상대진표.java

by 마늘아빠 2020. 12. 18.
728x90
반응형

문제 링크

programmers.co.kr/learn/courses/30/lessons/12985

 

코딩테스트 연습 - 예상 대진표

△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N

programmers.co.kr


* Programmers - Level 2 - (자바)예상대진표 - 비트연산(?) 

입출력 예시


< 로직 >

규칙

* 동그라미 안에 숫자가 다음 대진으로 갔을 때의 인덱스

* 각 숫자 x에 +1 하고 /2 한 결과이다.

* 즉 (A +1)/2 == (B+1)/2 인 결과를 찾으면 정답!


class Solution
{
    public int solution(int n, int a, int b)
    {
        int answer = 0;
        while(a != b){ // a와 b가 같으면 정답
            a = (a+1) / 2; // a = (a+1) >> 1 비트연산도 가능하다!
            b = (b+1) / 2; // b = (b+1) >> 1;
            answer++;
        }
       
        return answer;
    }
}

* 너무나도 간단한 코드! 그림 그리기 전까지는 생각해내기 어려웠다!

반응형