Question
https://school.programmers.co.kr/learn/courses/30/lessons/12985
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
Algorithm
- n을 사용하지 않고 문제를 풀 수 있다.
- a와 b의 번호가 같아지면, 이전 라운드에서 같은 경기를 했다는 의미이므로 while문을 사용해 a와 b가 다른 경우에만 round를 1씩 증가시켜준다.
Code
class Solution
{
public int solution(int n, int a, int b)
{
int round = 0; // 현재 라운드 수를 저장 (처음은 0)
// 두 참가자의 번호가 같아질 때까지 반복 (같아지면 같은 경기를 하게 되는 것)
while (a != b) {
// 다음 라운드에서의 번호는 (현재 번호 + 1) / 2
// 예: 1번과 2번은 1, 3번과 4번은 2로 매칭됨
a = (a + 1) / 2;
b = (b + 1) / 2;
round++; // 한 라운드 진행
}
// a와 b가 같은 번호가 되는 시점이 둘이 붙는 라운드
return round;
}
}
'Coding Test > [프로그래머스] Java' 카테고리의 다른 글
[프로그래머스 / Java] Lv.2 뒤에 있는 큰 수 찾기 (1) | 2025.06.12 |
---|---|
[프로그래머스 / Java] Lv.2 할인 행사 (1) | 2025.06.11 |
[프로그래머스 / Java] Lv.2 점프와 순간 이동 (1) | 2025.06.09 |
[프로그래머스 / Java] Lv.1 음양 더하기 (1) | 2025.06.08 |
[프로그래머스 / Java] Lv.1 정수 내림차순으로 배치하기 (1) | 2025.06.07 |