sm 기술 블로그
158. 2164(카드2) - 자바 본문
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Deque<Integer> queue = new ArrayDeque<>();
int N = sc.nextInt();
for (int i = 1; i <= N; i++) {
queue.add(i);
}
while(queue.size() != 1) {
queue.poll();
queue.add(queue.poll());
}
System.out.println(queue.poll());
}
}
문제요약
N장의 카드가 있는데 제일 위의 카드는 버리고 버리고 난 뒤 제일 위의 카드를 맨아래로 보내는 식으로 한장의 카드가 남을 때 까지 반복한다.
설명
큐를 이용한 쉬운 문제이다.
여기서 제일 위는 제일 앞을 뜻하므로 큐를 이용한다.
for (int i = 1; i <= N; i++) {
queue.add(i);
}
1~N까지의 카드를 큐에 저장한다.
while(queue.size() != 1) {
queue.poll();
queue.add(queue.poll());
}
카드가 한 장일 때까지 반복하며,
1. 제일 위의 카드는 버린다 (queue.poll())
2. 버린 상태에서 제일 위의 카드를 제일 아래로 보낸다. (queue.add(queue.poll()))
System.out.println(queue.poll());
마지막으로 한 장 있는 카드를 poll()을 통해 출력한다.
'문제 > 백준_자바' 카테고리의 다른 글
160. 1966(프린트 큐) - 자바 (0) | 2022.07.26 |
---|---|
159. 11866(요세푸스 문제 0) - 자바 (0) | 2022.07.26 |
157. 18258(큐) - 자바 (0) | 2022.07.25 |
156. 17298(오큰수) - 자바 (0) | 2022.07.25 |
155. 1874(스택 수열) - 자바 (0) | 2022.07.22 |
Comments