#문제
https://programmers.co.kr/learn/courses/30/lessons/12985#
#풀이
번호 간격이 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;
}
}
'💡Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 (Java) (0) | 2021.10.23 |
---|---|
[프로그래머스] 오픈채팅방 (Java) (0) | 2021.10.22 |
[프로그래머스] 이진 변환 반복하기 (Java) (0) | 2021.10.21 |
[프로그래머스] H-Index (Java) (0) | 2021.10.21 |
[프로그래머스] 행렬의 곱셈 (Java) (0) | 2021.10.20 |