[JAVA] 백준 2164번 : 카드 2

조예빈·2024년 6월 21일
0

Coding Test

목록 보기
10/138

https://www.acmicpc.net/problem/2164
이 문제는 큐를 이용하는 문제이다.

Queue

  • FIFO(First in first out)
  • 선입 선출
  • 큐의 맨 위는 첫 번째 요소를 의미하고, 큐의 맨 아래는 마지막 요소를 의미함
  • poll : 첫 번째 요소를 버리는 것
  • add : 마지막에 요소를 넣는 것
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine()); //카드의 장수
        Queue<Integer> queue = new LinkedList<>();
        for (int i = 1; i <= N; i++) {
            queue.add(i); //작은 수부터 큐에 들어가도록
        }
        while(queue.size() > 1){
            if(queue.size() == 1){
                break;
            }
            //맨 위의 카드를 버림(첫 번째 요소)
            queue.poll();
            //맨 위의 카드를 맨 아래에 넣음(마지막 요소)
            queue.add(queue.poll());
        }
        //마지막 남은 카드 출력
        System.out.println(queue.peek());
        br.close();
    }
}

profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러

0개의 댓글