💡Problem Solving/Programmers
[프로그래머스] 예상 대진표 (Java)
gom20
2021. 10. 21. 21:19
#문제
https://programmers.co.kr/learn/courses/30/lessons/12985#
코딩테스트 연습 - 예상 대진표
△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N
programmers.co.kr
#풀이
번호 간격이 1이더라도 해당 라운드에서 대진하지 않을 가능성이 있다.
예를 들어 아래 4, 5번 선수는 3라운드에서야 만날 수 있다.
1) a와 b의 차이가 1을 초과할 경우 번호를 다시 매긴다.
2) 차이가 1이여도 a와 b를 각각 2로 나눈 몫이 같을 경우 번호를 다시 매긴다.
1 | 2 | ||||||
1 | 2 | 3 | 4 | ||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
#소스코드
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 1;
while(Math.abs(a-b) > 1 || (Math.abs(a-b) == 1 && a/2 == b/2)){
if(a%2==1) a++;
if(b%2==1) b++;
a=a/2;
b=b/2;
answer++;
}
return answer;
}
}