이번 문제는 매우 간단했다.
import java.io.*;
import java.util.ArrayDeque;
import java.util.Deque;
public class Q2161 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
Deque<Integer> deque = new ArrayDeque<>(T);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < T; i++) {
deque.offer(i+1);
}
while(deque.size() != 1) {
sb.append(deque.pollFirst() + " "); // 버린 카드는 list에 저장한다.
deque.offerLast(deque.pollFirst()); // 다음 장은 맨 뒤에 넣는다.
}
System.out.println(sb.append(deque.peek()));
}
}
우선 deque을 카드의 순서에 맞게 초기화를 먼저 하였다.
그리고 deque의 남아있는 카드가 1개 남았을 때까지 반복문을 돌린다.
이때 뽑아 낸 카드의 번호는 sb에 저장하고, 다음장은 뒷장에 추가해준다.
마지막으로, 남았을 한장도 마저 저장해준 후 출력하면 된다.
'알고리즘 분류 > 큐 알고리즘' 카테고리의 다른 글
5430 AC JAVA (0) | 2023.04.05 |
---|---|
1021 회전하는 큐 JAVA (0) | 2023.04.03 |
10866 덱 JAVA (0) | 2023.03.30 |
18258 큐2 JAVA (0) | 2023.03.30 |
1966 프린터 큐 JAVA (0) | 2023.03.30 |