풀이
1부터 n까지의 카드가 위에서부터 있고, 그 카드를 다음과 같은 두가지 동작을 순서로 카드가 1장 남을 때까지 반복한다.
- 맨 위 카드를 버린다.
- 맨 위 카드를 빼서 맨 아래로 넣는다.
는
- 큐.poll()
- 큐.add(큐.poll())
과 같다. 즉, 큐를 통해 간단하게 풀 수 있는 문제이다.
소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.*;
public class 카드2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Queue<Integer> card = new LinkedList<>();
for (int i = 0; i < n; i++) {
card.add(i+1);
}
while (card.size() > 1) {
card.poll();
card.add(card.poll());
}
System.out.println(card.poll());
}
}
태클 감사합니다.
조언 환영입니다.