문제 출처
https://www.acmicpc.net/problem/2164
풀이
- 덱(Deque)에 데이터를 차례대로 넣는다. [1, 2, 3, 4, 5, 6]
- 덱의 Top에 있는 1을 먼저 뽑아낸다. deque.poll()
- 그 다음 Top의 2를 뽑아 가장 뒤로 보낸다.
- 위의 로직을 deque의 크기가 1이 아닐 경우 반복한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int N = Integer.parseInt(stringTokenizer.nextToken());
Deque<Integer> deque = new ArrayDeque<>();
for (int i = 1; i <= N; i++) {
deque.addLast(i);
}
while (deque.size() != 1) {
deque.poll();
int value = deque.poll();
deque.addLast(value);
}
System.out.println(deque.peek());
}
}
채점 결과