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의 값을 갱신하여준다.
'알고리즘' 카테고리의 다른 글
[카카오 블라인드 2018] [1차] 캐시 - java (0) | 2021.09.16 |
---|---|
달팽이 문제 (0) | 2021.09.15 |
[SW Expert Academy] 원자 소멸 시뮬레이션 - java (0) | 2021.09.01 |
[SW Expert Academy] 핀볼게임 - java (0) | 2021.08.31 |
[프로그래머스] 순위 검색 - java (0) | 2021.08.27 |