응애개발자
article thumbnail
728x90

문제

https://www.acmicpc.net/problem/2164

 

접근 방법

1. Queue를 활용하여 1~N 까지 카드를 넣어줍니다.

2. 카드에서 한장을 버리고, 남은 카드가 한장이라면 그것이 답이고, 2장 이상이라면 앞에있는 카드를 뒤로 옮겨줍니다.

3. 만약 N이 한장일 경우 Queue는 무한루프에 빠지게 되므로 N==1일때 예외 처리를 해줍니다.

 

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class Main {
    private static BufferedReader br;
    private static int N;
    private static Queue<Integer> que = new LinkedList<>();

    //입력
    public static void input() throws Exception {
        br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());

        for(int i = 1 ; i <= N ; i++){
            que.add(i);
        }
    }

    //실행
    public static void process() {
        if(que.size()==1){
            System.out.println(que.poll());
            return;
        }

        while(!que.isEmpty()){
            que.poll();

            if(que.size()==1){
                System.out.println(que.poll());
                break;
            }

            que.add(que.poll());
        }
    }


    public static void main(String[] args) throws Exception {
        input();
        process();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!