https://school.programmers.co.kr/learn/courses/30/lessons/12985
A와 B가 몇 라운드에 붙게 되는가를 계산하는 문제.
문제 설명대로 전체 팀의 수 N은 2의 제곱으로 주어진다.
때문에 라운드를 진행할 때마다 전체 팀은 1번 부터 N/2번을 다시 배정 받아 절반씩 줄어든다.
A나 B가 홀수일 경우 A와 A+1, B와 B+1은 같이 게임을 진행하기 때문에 계산을 쉽게하기 위해 짝수로 맞춰주었다.
2를 계속 나누어주다가 같은 차례(같은 숫자)를 배정받을 경우 서로 붙게 되는것이기 때문에 while 문을 종료.
그때 까지의 라운드를 정답으로 출력!
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 0;
while (a != b) {
if (a % 2 != 0) a = a + 1;
if (b % 2 != 0) b = b + 1;
a = a / 2;
b = b / 2;
answer++;
}
return answer;
}
}
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 우박수열 정적분 (0) | 2023.03.23 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 뉴스 클러스터링 (1) | 2023.03.14 |
[프로그래머스][JAVA]Lv. 2 - 영어 끝말잇기 (0) | 2023.03.06 |
[프로그래머스][JAVA]Lv. 2 - 점프와 순간 이동 (0) | 2023.02.26 |
[프로그래머스][JAVA]Lv. 2 - 배달 (0) | 2023.02.19 |