[프로그래머스] 예상대진표(Java)

2025. 7. 1. 17:45·알고리즘

문제

N명이 참가하는 토너먼트에서 A번 참가자와 B번 참가자가 몇 번째 라운드에서 만나게 되는지를 구하는 문제입니다.

라운드는 다음과 같이 진행됩니다:

  • 1라운드에서는 1번 vs 2번, 3번 vs 4번, …
  • 이긴 사람은 다음 라운드에 진출하며, (번호 + 1) / 2의 번호를 받게 됩니다.

🛠 사용 기술

  • Java 기본 문법 (while, Math.abs, 산술 연산자)
  • 시뮬레이션 알고리즘
  • 비트 연산 없이 자연수 순서 기반의 라운드 추적

Approach 1 ⭕

💻 코드

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

🔍 접근법

  • 문제의 핵심은 A번과 B번 참가자가 같은 조에 배정되는 라운드를 찾는 것입니다.
  • 각 참가자는 다음 라운드에 (x + 1) / 2로 올라가기 때문에, 이 과정을 반복하며 두 번호가 같아질 때까지 시뮬레이션합니다.
  • 두 번호가 같아지는 순간이 두 사람이 직접 맞붙는 시점입니다.

느낀 점 및 메모 💡

  • (x + 1) / 2라는 수식을 통해 자연스럽게 다음 라운드 번호로 이동할 수 있음을 알게 되었고, 지속적인 번호 갱신을 통해 결국 두 참가자의 대진 시점을 정확히 계산할 수 있었다.
  • 처음에는 Math.abs(a - b) == 1인 경우 두 참가자가 붙는다고 착각했지만, 실제로는 짝수-홀수 순서에 따라 같은 조에 있을 수도, 아닐 수도 있음을 알게 되었다. 예를 들어 4, 5번이라면 abs 값은 1이지만, 해당 라운드에서 서로 맞붙지 않는다.
  • 처음엔 두 값의 차를 절댓값으로 비교했지만, 실제론 단순하게 x != y 비교만으로 충분했다. 불필요한 연산을 줄이는 것도 코드 최적화의 중요한 습관 중 하나다.

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

[BOJ] 1541 - 잃어버린 괄호(Java)  (0) 2025.07.09
[프로그래머스] 괄호 회전하기(Java)  (2) 2025.07.05
[프로그래머스] 연속 부분 수열 합의 개수(Java)  (1) 2025.07.02
[BOJ] 11047 - 동전 0(Java)  (1) 2025.03.17
[BOJ] 1764 - 듣보잡(Java)  (0) 2025.03.17
'알고리즘' 카테고리의 다른 글
  • [프로그래머스] 괄호 회전하기(Java)
  • [프로그래머스] 연속 부분 수열 합의 개수(Java)
  • [BOJ] 11047 - 동전 0(Java)
  • [BOJ] 1764 - 듣보잡(Java)
dev-hun
dev-hun
스스로 학습한 내용을 정리하는 공간입니다.
  • dev-hun
    훈심's IT Blog
    dev-hun
  • 전체
    오늘
    어제
    • 분류 전체보기 (17)
      • 알고리즘 (14)
      • 트러블 슈팅 (1)
      • TIL (1)
      • 자료구조 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    StringTokenizer
    리트코드
    이분 탐색
    StringBuilder
    HashSet
    잃어버린 괄호
    예상대진표
    알고리즘
    Spring Boot
    우선순위 큐
    greedy
    DFS
    백준
    괄호 회전하기
    프로그래머스
    누적합
    NGINX
    swagger
    java
    그리디
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dev-hun
[프로그래머스] 예상대진표(Java)
상단으로

티스토리툴바