큐는 First In First Out으로 처음 넣는 값을 처음으로 뺄 수 있는 자료구조이다.
그래서 이번 문제는 어렵지 않다고 볼 수 있다.
주어진 숫자만큼 큐에 넣어준다.
예를 들어 6이면 1 2 3 4 5 6 순서로 큐에 넣어준다.
여기서 1을 poll() 메소드로 꺼내오고 2를 6뒤에 붙이려면
que.add(que.poll())의 형식으로 붙일 수 있다.
이 과정을 큐 안에 데이터가 하나만 남을 때까지 반복하면 쉽게 답을 구할 수 있다.
아래 코드를 보자.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Queue<Integer> que = new LinkedList<>();
int N = Integer.parseInt(br.readLine());
for(int i = 1; i <= N; i++) {
que.add(i);
}
while(que.size() != 1) {
que.poll();
que.add(que.poll());
}
System.out.println(que.peek());
}
}