[프로그래머스] 42586. 기능개발

최대 1 분 소요

문제 링크

[프로그래머스] 42586. 기능개발


풀이 과정

뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발되어야 한다는 점에서 큐를 사용해야 한다고 생각했습니다.

큐는 각 기능들이 배포되는 데 걸리는 일수를 관리합니다. 큐의 맨 앞 요소의 일수를 보고, 해당 일수보다 작게 걸리는 기능들을 pop하면서 그 개수를 count 변수에 관리합니다. 해당 배포때 같이 배포되는 기능들의 개수를 answer 리스트에 담아 리턴합니다.


코드

public static List solution(int[] progresses, int[] speeds) {
        List<Integer> answer = new ArrayList<>();
        Queue<Integer> queue = new LinkedList<>();

        for (int i = 0; i < progresses.length; i++) {
            int day = (int) Math.ceil((double) (100 - progresses[i]) / speeds[i]);
            queue.add(day);
        }

        while(!queue.isEmpty()) {
            int now = queue.peek();
            int count = 0;

            while(!queue.isEmpty() && queue.peek() <= now) {
                count++;
                queue.poll();
            }

            answer.add(count);
        }

        return answer;
    }

카테고리:

업데이트:

댓글남기기