카드2 (백준 2164)

jihyeon kim·2026년 1월 9일

코딩테스트

목록 보기
11/33

문제 분석

  1. N장의 카드가 있음. 1번 카드는 가장 위, N번 카드가 가장 아래.
  2. 가장 위에 있는 카드 버리기.
  3. 그 다음 가장 위에 있는 카드를 가장 아래에 있는 카드 밑으로 옮긴다.
  4. 카드가 1장이 될때까지 반복 -> 남는 카드 출력
  • 큐(선입선출) 사용

정답

package A0study;

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

public class p2164_카드2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Queue<Integer> myQueue = new LinkedList<>();
        int N = Integer.parseInt(br.readLine());
        for(int i=1; i<=N; i++) {
            myQueue.add(i);
        }
        while(myQueue.size()>1) {
            myQueue.poll();                 // 1. 맨 위의 카드 버리기
            myQueue.add(myQueue.poll());    // 2. 그 다음 카드를 맨 밑으로 이동
        }
        System.out.println(myQueue.poll());
    }
}

0개의 댓글