[프로그래머스 / Java] Lv2 - 예상 대진표

은상현(COBI)·2022년 10월 26일
0

Programmers

목록 보기
2/7
post-thumbnail

🔒 예상 대진표

✔ 문제 설명

🚩 요구사항 분석

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;
    }
}

💡 추가한 테스트 케이스

nparam1param2Return
row18682
row28132
row31611153
row416894

n을 반으로 나눴을 때 오른쪽에있는 경우
반으로 나눴을때 왼쪽에있 경우
반으로 나누고 오른쪽, 반으로 나누고 왼쪽에있는 경우

🎯 알아 볼 것

제곱승을 구하는 함수

profile
백엔드 떠오르는 상현달

0개의 댓글