알고리즘/programmers

프로그래머스 레벨2 예상 대진표 (JAVA)

dev-jo 2021. 8. 22. 01:30

오랜만에 알고리즘 문제 관련 글을 씁니다.

 

지금까지 계속 풀고는 있었는데 또 시간이..

 

이번에 푼 문제는

 

예상 대진표!

 

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

 

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

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

programmers.co.kr

 

코드는 GitHub 에도 올라가 있습니다.

 

class Solution
{
    public int solution(int n, int a, int b)
    {
        int answer = 1;
        while ((a - b != 1 && a - b != -1) || Math.max(a,b) % 2 != 0) {

            a = (int) Math.ceil(((double) a / 2));
            b = (int) Math.ceil((double) b / 2);

            answer++;
        }

        return answer;
    }
}

 

간단한 문제입니다..

 

1,2

3,4

5,6

 

이런 식으로 2개씩 같은 라운드고..

 

그럼 a와 b는 1의 차이가 납니다

 

그리고 둘중 큰 숫자는 짝수이므로

 

while에 조건을 걸고 계속 돌려주면 되는 문제입니다!

 

N까지 쓸필요는 없습니다~