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

fsm12·2023년 8월 11일
0

프로그래머스

목록 보기
56/57
post-thumbnail
post-custom-banner

문제링크

문제 이해

[ 입력형태 / 조건 ]

n
게임 참가자 수 | 8 | 21 이상 220 이하인 자연수

a
참가자 번호 | 4 | N 이하인 자연수, A ≠ B

b
경쟁자 번호 | 7 | N 이하인 자연수, A ≠ B

[ 문제 ]

처음 라운드에서 A번을 가진 참가자는 경쟁자로 생각하는 B번 참가자와 몇 번째 라운드에서 만나는지 return

[ 풀이 ]

참가자 2명씩 짝지어 진행되는 경기이므로, 현재 라운드에 n번 번호를 가진 사람이 다음 라운드에선 n/2를 올림한 값을 번호로 가지게 됨
2로 나눈값이 같다면 이번에 경기할 참가자이므로 이를 이용해서 구하면 됨

경기1 vs 23 vs 45 vs 67 vs 8
/20.5 ~ 1 => 11.5 ~ 2 => 22.5 ~ 3 => 33.5 ~ 4 => 4




코드

> [성공] 1차 시도 : 구현

  • 생각한 풀이 그대로 구현
import java.util.*;

class Solution{
    public int solution(int n, int a, int b){
        int round = 1;
        while(true){
            a = (int)Math.ceil(a/2.0);
            b = (int)Math.ceil(b/2.0);
            if(a==b)
                break;
            round++;
        }
        return round;
    }
}




post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 8월 11일

유익한 자료 감사합니다.

답글 달기