programmers_예상 대진표_java

2023. 4. 3. 18:07Algorithm/Programmers

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12985#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution
{
    public int solution(int n, int a, int b)
    {
        int answer = 0;

        answer = search(n, a, b);

        return answer;
    }
    
    public int findMaxRound(int n){ // 최대 라운드 수 계산
        int cnt = 0;
        while(n>1){
            n = n/2;
            cnt++;
        }
        return cnt;
    }
    
    public int search(int n, int a, int b){
        int start = 1;
        int end = n;
        int big = Math.max(a, b);
        int small = Math.min(a, b); 
        int cnt = findMaxRound(n); // 최대 라운드수
        while(start <= end){
            int mid = ( start + end ) /2;
            
            if(small <= mid && big > mid){ // 두 사이가 멈
                break;
            }
            else if(small >= mid && big > mid) {// 모두 큰 경우
                start = mid + 1;
            }
            else if(small < mid && big <= mid) {// 모두 작은 경우
                end = mid - 1;
            }
            
            cnt--;
        }
        return cnt;
    }
}