[백준/JAVA] 2164번 카드 2

정은아·2024년 2월 10일
post-thumbnail

내 풀이

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

public class Main {
    public static void main(String[] args) throws Exception {

        // 디큐 사용하기
        // 제일 위에 있는 카드를 바닥에 버린다. 그 다음,
        // 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다.

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int num = Integer.parseInt(br.readLine());
        Deque<Integer> deque = new ArrayDeque<>();

        for (int i = 1; i <= num; i++) {
            deque.add(i);
        }

        while(true){
            int number = 0;

            if (deque.size() == 1){
                sb.append(deque.poll());
                break;
            }else{
                deque.pollFirst();
            }

            number = deque.pollFirst();
            deque.offerLast(number);
        }

        System.out.println(sb.toString());
    }
}

느낀점

이 문제도 BufferedReader를 사용했다. 앞으로는 Scanner 대신 BufferedReader를 사용하려 노력해야겠다. StringTokenizer는 사용할 필요가 없었다.

설계는 간단했다!

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글