🔒 예상 대진표
✔ 문제 설명
🚩 요구사항 분석
- 2의 지수 승으로 주어지는 n -> 2의 제곱승찾기
🔑 문제풀이
항상 이긴다는 가정하에 주어지는 n을 반으로 나눠 왼쪽과 오른쪽으로 나눈다면,
결국 오른쪽에있는경우는 해당 n의 제곱승이 나오기에 계속 잘라주면서 비교하는 방식으로 풀었다.
class Solution
{
public int solution(int n, int a, int b){
int answer = 0;
int count = 0;
int s = n;
for(int i=0; i<=n; i++){
if (s == 1){
break;
}
s = s/2;
count++;
}
for(int i = count ; i<=count; i--){
n = n/2;
if(n < b && n >=a || b<=n && n<a ){
answer = i;
break;
} else if(n <b && n<a){
b = b-n;
a = a-n;
}
}
return answer;
}
}
- 처음 for 문을 통해 2의 제곱승(count)찾기
- 최대 결승에서 만난다는 가정하에 반으로 자르면서(count--) 경우의 수를 줄여나감
💡 추가한 테스트 케이스
n | param1 | param2 | return | |
row1 | 8 | 6 | 8 | 2 |
row2 | 8 | 1 | 3 | 2 |
row3 | 16 | 11 | 15 | 3 |
row4 | 16 | 8 | 9 | 4 |
n을 반으로 나눴을 때 오른쪽에있는 경우
반으로 나눴을때 왼쪽에있 경우
반으로 나누고 오른쪽, 반으로 나누고 왼쪽에있는 경우
🎯 알아 볼 것
제곱승을 구하는 함수
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Java] Lv2 - 짝지어 제거하기 (0) | 2023.01.04 |
---|---|
[프로그래머스 / Java] Lv2 - 이진 변환 반복하기 (0) | 2023.01.04 |
[프로그래머스 / Java] Lv2 - 올바른 괄호 (0) | 2023.01.04 |
[프로그래머스 / Java] Lv2 - 점프와 순간 이동 (0) | 2023.01.04 |
[프로그래머스 / Java] Lv2 - JadenCase 문자열 만들기 (0) | 2023.01.04 |