[코딩테스트] 백준 2164 자바

Henson·2025년 5월 17일

코딩테스트

목록 보기
8/50
post-thumbnail

백준 2164

백준 2164 문제

import java.util.*;

public class Boj2164 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); // 카드 개수
        Queue<Integer> queue = new LinkedList<>(); // 큐 생성

        for (int i = 1; i <= n; i++) {
            queue.add(i); // 1부터 n까지의 카드 큐에 담기
        }

        while (queue.size() != 1) { // 카드의 수가 1이 될 때까지 반복
            queue.poll(); // 맨 위의 카드 버림
            queue.add(queue.poll()); // 그 다음 카드는 맨 아래에 넣기
        }

        System.out.println(queue.poll()); // 마지막 남은 카드 출력
    }
}

풀이

  1. 이 문제는 Queue 자료구조에 대한 이해만 있으면 쉽게 해결할 수 있는 간단한 문제이다. 앞쪽으로만 값을 뺴고, 뒤쪽으로만 값을 더하기 때문에 선입선출(FIFO) 구조의 Queue 자료구조를 사용하면 된다.
  2. Scanner를 통해 n의 값을 입력 받는다.
  3. Queue를 생성한다.
  4. 1부터 n까지 반복하며 queue.add()를 통해 큐에 값을 넣어준다.
  5. while문을 통해 queue의 길이가 1이 될 때까지 반복문을 수행한다.
  6. 맨 첫 번째 값은 버리고, 두 번째 값은 맨 뒤로 넣어준다.
  7. 큐의 길이가 1이 되면 남은 값을 출력해준다.
profile
세계 최고의 개발자가 되고 말겠어.

0개의 댓글