개발 무지렁이

[문제풀이] B2164 카드2 본문

코딩 테스트/문제풀이

[문제풀이] B2164 카드2

Gaejirang-e 2023. 3. 19. 19:52

카드2


  🪅 카드를 빼는 위치와 옮기는 위치를 보고서 큐(Queue)를 생각할 수 있느냐
  🪅 큐(Queue)를 구현할 수 있느냐 => new ArrayDeque<>();
  🪅 어떤 동작을 반복할 때, 반복동작을 메서드로 만들 수 있느냐

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

/**
 * 백준 2164번 카드2
 *
 * 입력:
 * 첫째 줄에 정수 N(1 ≤ N ≤ 500,000)이 주어진다.
 * 
 * 출력:
 * 첫째 줄에 남게 되는 카드의 번호를 출력한다.
 *
 */
public class Main {
    static Queue<Integer> queue = new ArrayDeque<>();

    public static void workOrder() {
        queue.remove();

        int top = queue.remove();
        queue.offer(top);
    }
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(bf.readLine()); // 6

        // 전체 카드 초기화, 123456
        for(int i = 1; i <= N; i++) {
            queue.offer(i);
        }

        while(queue.size() != 1) {
            workOrder();
        }

        System.out.println(queue.peek());
    }
}
Comments