본문 바로가기
알고리즘

[프로그래머스] 예상 대진표 - java

by minkang 2021. 9. 6.

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

 

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

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

programmers.co.kr

class Solution
{
    public int solution(int n, int a, int b)
    {
        int round = 1;
        while(true){
            if((a+1)/2 == (b+1)/2){
                return round;
            }
            round++;
            a = (a+1)/2;
            b = (b+1)/2;
        }
    }
}

1,2 3,4 5,6에서

A가 3, B가 4이면 서로 대전하게 된다.

즉, if((A+1)/2 == (B+2)/2)가 만족하면 서로 대전하는 경우이므로 return하면 된다.

 

1. (A+1)/2, (B+1)/2가 같으면 현재 라운드를 반환한다.

2. A의 다음 라운드 번호는 (A+1)/2이고, B의 다음 라운드 번호는 (B+1)/2이다. 라운드를 1올려주고 A와 B의 값을 갱신하여준다.