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

Gaanii·2025년 5월 7일

Problem Solving

목록 보기
188/210
post-thumbnail

아래 프로그래머스 로고를 클릭하면 해당 문제로 이동합니다 😀

프로그래머스로고



풀이과정


시뮬레이션처럼 매 라운드를 만들면서 풀까 ... 했으나 그거보다 그룹화를 했을 때 두 번호가 언제 같은 그룹에 들어가는지를 확인해주는 아이디어를 이용했다.

매 라운드마다 참가자의 번호를 (현재 번호 + 1) // 2로갱신하면 된다.

  • 3번 참가자는 4번과 붙고, 이긴 뒤에는 4 // 2 = 2번이 된다.
  • 7번 참가자는 8번과 붙고, 이긴 뒤엔 (7 + 1) // 2 = 4번이 된다.

결론적으로, 번호가 (현재 번호 + 1) // 2씩 줄어들면서 다음 라운드로 이동하고 이 두번호가 같아질 때 라운드를 리턴해주면 된다.


코드


1. Python

def solution(n, a, b):
    result = 0
    while a != b:
        a = (a + 1) // 2
        b = (b + 1) // 2
        result += 1
    return result

2. JS

function solution(n, a, b) {
    let result = 0;
    while (a !== b) {
        a = Math.ceil(a / 2);
        b = Math.ceil(b / 2);
        result += 1;
    }
    return result;
}


결과


정답

0개의 댓글