
https://school.programmers.co.kr/learn/courses/30/lessons/120843
이 문제를 보는 순간 요세푸스 문제가 떠올랐다. 배열의 최소 길이는 2 이상을 보장하니 queue에 다 집어넣고 k-1번만큼 2개씩 뽑았다.
그러면 결과적으로 마지막에 queue.poll()한 값이 정답이 된다.
배열의 인덱스가 오류날 골치가 없는 해결 방법이다.
import java.util.*;
class Solution {
public int solution(int[] numbers, int k) {
Queue<Integer> queue = new LinkedList<>();
for (int i = 0; i < numbers.length; i++) {
queue.add(numbers[i]);
}
while(k > 1) { // k번째를 뽑으려면 k-1만큼 수행해야 한다.
queue.add(queue.poll());
queue.add(queue.poll());
k--;
}
return queue.poll();
}
}