오늘 풀어본 문제는 이번주에 풀었던 다른 문제들보다 수월하게 풀렸다.
입력된 정수만큼의 수를 나열해서 맨 처음 수를 지우고, 두번째수는 맨 뒤로 보내는 것을 반복하여 마지막에 남는 최후의 숫자를 출력하는 문제였다.
나열된 수에서 가장 앞에 있는 정수에 대해 처리를 하는 문제이기 때문에 큐를 이용해서 구현하였다.
public static void main(String[] args) { Scanner input = new Scanner(System.in); int N = input.nextInt(); Queue<Integer> queue = new LinkedList(); for(int i=0; i<N; i++){ queue.add(i+1); } while(queue.size() != 1){ queue.remove(); queue.add(queue.peek()); queue.remove(); } System.out.println(queue.peek()); }
}
1부터 입력된 정수(N)까지의 수를 queue에 넣어주고,
queue에 들어있는 값이 하나가 될 때까지 값을 삭제하고, 맨 뒤로 보내는 것을 반복하도록 구현하였다.