728x90
이해하기
제한사항에서 N이 2의 지수 승이라고 되어 있는 것을 보고 log2로 어떻게 나눠서 계산하는건가 싶었다.
규칙이 있을 것 같아서 이렇게 저렇게 풀이해보다가 결국 실패...
그래서 참고한 블로그⬇️
규칙을 알고나니 쉽게 느껴졌다. 그치만 바로 찾기는 어려워~~
첫번째 라운드에서 다음 라운드로 올라갈 때 어떤 순서를 가지게 되는지가 핵심이었다!
예를 들어 4번이 한 번 이겨서 다음 라운드로 올라갈 때는 2번 순서가 되고, 7번이 한 번 이겨서 다음 라운드로 올라갈 때는 4번이 된다.
이를 식으로 나타내면 n / 2 + n % 2라고 나타낼 수 있는데, 뒤의 n % 2는 홀수와 짝수를 구분하기 위함이라고 이해했다.
문제풀이
class Solution {
public int solution(int n, int a, int b) {
int answer = 0;
while (true) {
a = a / 2 + a % 2;
b = b / 2 + b % 2;
answer++;
if (a == b) {
break;
}
}
return answer;
}
}
'JAVA > Coding Test Study' 카테고리의 다른 글
[Lv.2] 프로그래머스 - 행렬의 곱셈 : Java (0) | 2024.05.24 |
---|---|
[Lv.2] 프로그래머스 - N개의 최소공배수 : Java (0) | 2024.05.20 |
[Lv.0] 프로그래머스 - 직사각형 넓이 구하기 : Java (0) | 2024.05.20 |
[Lv.2] 프로그래머스 - JadenCase 문자열 만들기 : Java (0) | 2024.05.20 |
[Lv.1] 프로그래머스 - 달리기 경주 : Java (0) | 2024.05.15 |