프로그래머스 - 공 던지기

남궁진 (jinvicky)·2026년 4월 7일

Problem


https://school.programmers.co.kr/learn/courses/30/lessons/120843

Solution


이 문제를 보는 순간 요세푸스 문제가 떠올랐다. 배열의 최소 길이는 2 이상을 보장하니 queue에 다 집어넣고 k-1번만큼 2개씩 뽑았다.
그러면 결과적으로 마지막에 queue.poll()한 값이 정답이 된다.

배열의 인덱스가 오류날 골치가 없는 해결 방법이다.

Code


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();
    }
}
profile
문제를 차근차근 하나씩 해결하려고 합니다:)

0개의 댓글