백준 2164
백준 2164 문제
import java.util.*;
public class Boj2164 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Queue<Integer> queue = new LinkedList<>();
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());
}
}
풀이
- 이 문제는 Queue 자료구조에 대한 이해만 있으면 쉽게 해결할 수 있는 간단한 문제이다. 앞쪽으로만 값을 뺴고, 뒤쪽으로만 값을 더하기 때문에 선입선출(FIFO) 구조의 Queue 자료구조를 사용하면 된다.
Scanner를 통해 n의 값을 입력 받는다.
- 빈
Queue를 생성한다.
- 1부터
n까지 반복하며 queue.add()를 통해 큐에 값을 넣어준다.
while문을 통해 queue의 길이가 1이 될 때까지 반복문을 수행한다.
- 맨 첫 번째 값은 버리고, 두 번째 값은 맨 뒤로 넣어준다.
- 큐의 길이가 1이 되면 남은 값을 출력해준다.