백준공부/java

[백준] 1057번 토너먼트 (silver 4

gomduri43 2024. 9. 3. 14:37

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st=new StringTokenizer(br.readLine());
        int n=Integer.valueOf(st.nextToken());
        int kim=Integer.valueOf(st.nextToken());
        int im=Integer.valueOf(st.nextToken());

        Queue<Character> que=new LinkedList<>();

        for(int i=1; i<=n; i++){
            if(i== kim || i==im){
                que.offer('X');
            }
            else{
                que.offer('1');
            }
        }

        int answer=-1;
        int round=0;
        while(answer!=round){
            round++;

            int many=que.size();
            for(int i=1; i<=many/2; i++){
                char tmp1=que.poll();
                char tmp2=que.poll();

                if(tmp1==tmp2 && tmp2=='X'){
                    answer=round;
                    break;
                }
                else if(tmp1=='X'){
                    que.offer('X');
                }
                else if(tmp2=='X'){
                    que.offer('X');
                }
                else{
                    que.offer('1');
                }
            }

            if(many%2==1){
                que.offer(que.poll());
            }
        }

        System.out.println(answer);

    }
}

//브루트포스로 해결. 둘이 만날때 종료, 이외에는 둘은 무조건 승리한다는 조건 충족
//한번에 두명이서 대결이므로, 만약 전체가 홀수였을 경우는 나머지 한명을 따로 부전승으로 올림