[백준:2164] 카드2 (JAVA)

dev_kiiim·2022년 11월 30일
0

CODING TEST

목록 보기
13/23
post-thumbnail

오늘 풀어본 문제는 이번주에 풀었던 다른 문제들보다 수월하게 풀렸다.

입력된 정수만큼의 수를 나열해서 맨 처음 수를 지우고, 두번째수는 맨 뒤로 보내는 것을 반복하여 마지막에 남는 최후의 숫자를 출력하는 문제였다.
나열된 수에서 가장 앞에 있는 정수에 대해 처리를 하는 문제이기 때문에 큐를 이용해서 구현하였다.


public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int N = input.nextInt();
    Queue<Integer> queue = new LinkedList();

    for(int i=0; i<N; i++){
        queue.add(i+1);
    }
    while(queue.size() != 1){
        queue.remove();
        queue.add(queue.peek());
        queue.remove();
    }
    System.out.println(queue.peek());
}

}

1부터 입력된 정수(N)까지의 수를 queue에 넣어주고,
queue에 들어있는 값이 하나가 될 때까지 값을 삭제하고, 맨 뒤로 보내는 것을 반복하도록 구현하였다.

0개의 댓글