[백준_2164] 카드 2 - JAVA

jm_25·2021년 12월 12일
0

알고리즘

목록 보기
36/40
post-thumbnail

문제 출처

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

풀이

  1. 덱(Deque)에 데이터를 차례대로 넣는다. [1, 2, 3, 4, 5, 6]
  2. 덱의 Top에 있는 1을 먼저 뽑아낸다. deque.poll()
  3. 그 다음 Top의 2를 뽑아 가장 뒤로 보낸다.
  4. 위의 로직을 deque의 크기가 1이 아닐 경우 반복한다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
        int N = Integer.parseInt(stringTokenizer.nextToken());
        Deque<Integer> deque = new ArrayDeque<>();
        for (int i = 1; i <= N; i++) {
            deque.addLast(i);
        }
        while (deque.size() != 1) {
            deque.poll();
            int value = deque.poll();
            deque.addLast(value);
        }
        System.out.println(deque.peek());
    }
}

채점 결과

profile
매일 매일 한 개씩

0개의 댓글