Coding Test/[프로그래머스] Java

[프로그래머스 / Java] Lv.2 예상 대진표

annovation 2025. 6. 10. 20:58

Question

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


Algorithm

  1. n을 사용하지 않고 문제를 풀 수 있다.
  2. a와 b의 번호가 같아지면, 이전 라운드에서 같은 경기를 했다는 의미이므로 while문을 사용해 a와 b가 다른 경우에만 round를 1씩 증가시켜준다.

Code

class Solution
{
    public int solution(int n, int a, int b)
    {
        int round = 0; // 현재 라운드 수를 저장 (처음은 0)
        
        // 두 참가자의 번호가 같아질 때까지 반복 (같아지면 같은 경기를 하게 되는 것)
        while (a != b) {
            // 다음 라운드에서의 번호는 (현재 번호 + 1) / 2
            // 예: 1번과 2번은 1, 3번과 4번은 2로 매칭됨
            
            a = (a + 1) / 2;
            b = (b + 1) / 2;
            
            round++; // 한 라운드 진행
        }

        // a와 b가 같은 번호가 되는 시점이 둘이 붙는 라운드
        return round;
    }
}