https://programmers.co.kr/learn/courses/30/lessons/12985
입출력 예와 설명
문제를 읽으며 30~40분 정도 고민하다 보니
번호가 짝수 일 경우에는 번호 / 2 가 다음 라운드의 자기 숫자가 되고
번호가 홀수 일 경우에는 번호 / 2 +1이 다음 라운드의 자기가 숫자가 된다.
항상 이긴다고 가정했으므로 인원이 반으로 줄어들며 번호가 새로 매겨지다가 결국 같은 번호가 되는 시점이 A와 B가 붙게 되는 라운드라고 판단했다.
더보기
import java.util.*;
class Solution
{
public int solution(int n, int a, int b)
{
//최대 N/2번까지 대회
int max = Math.max(a,b);
int min = Math.min(a,b);
boolean init = true;
int cnt = 0;
int num1;
int num2;
num1 = divide(max);
num2 = divide(min);
if(num1 == num2){
cnt++;
init = false;
}
while(init)
{
max = divide(max);
min = divide(min);
cnt++;
if((max == min)){
break;
}
// System.out.println("min: "+min+" max: " + max);
}
return cnt;
}
public static int divide(int num){
if(num% 2 ==0){
return num/2;
}
else{
return num/2 +1;
}
}
}
max와 min은 서로 대소가 바뀌어서 주어질 경우를 생각해서 사용한 건데 지금 생각해보니 의미 없는 것 같다..
개인적인 정리이므로 지적과 틀린 부분은 알려주시면 감사하겠습니다.
'PS' 카테고리의 다른 글
[BOJ]16234번: 인구 이동 (0) | 2021.06.16 |
---|---|
[Programmers] LV2 - 게임 맵 최단거리 (0) | 2021.06.16 |
[BOJ]17144번 : 미세먼지 안녕! (0) | 2021.06.14 |
[BOJ] 1958번: LCS 3 (0) | 2021.06.03 |
[BOJ] 1145번 : 적어도 대부분의 배수 (0) | 2017.06.23 |