코드를 조금 복잡하게 짜게 됬다.
이분 탐색인줄 알았지만 그건 아니었던 걸로...nowline은 현재 대진표에 남아있는 사람의 절반을 나타내는 값이다.
그래서 nowline을 기준으로 a,b의 위치가 좌우에 있다면 반드시 현재 nowline의 지수의 값 +1 만큼의 round를 진행하게 된다.if(nowline>=a && nowline<b){ //딱 중간 answer = jisu+1; break; }nowline보다 a,b가 둘다 작다면 nowline 이후의 값들은 필요가 없으니 버려준다.
else if(nowline>=a && nowline>=b){ nowline = nowline/2; jisu--; }nowline보다 a,b가 둘다 크다면 nowline 이전의 값들은 필요가 없으니 버리는데
이경우 앞에 있는 자리로 떙겨줘야 하므로 a,b를 nowline만큼 뺴준다.else { //nowline <=a && nowline<=b a -= nowline; b -= nowline; nowline = nowline/2; jisu--; }
class Solution{
    public int solution(int n, int a, int b){
        int answer = 0;
        int nowline = n/2;
        int jisu = -1;
        while(n!=1){
            n = n/2;
            jisu++;
        }
       
        //System.out.println(jisu);
        //a<b로 만들어줌
        if(a>b){
            int temp = a;
            a = b; 
            b= temp;
        }
        //System.out.println(nowline+" "+jisu);
        while(true){
            if(nowline>=a && nowline<b){
                //딱 중간
                answer = jisu+1;
                break;
            }else if(nowline>=a && nowline>=b){
                nowline = nowline/2;
                jisu--;
             }else { //nowline <=a && nowline<=b
                a -= nowline;
                b -= nowline;
                nowline = nowline/2;
                jisu--;
            }
                       
         }
        
        
        return answer;
    }
}