[프로그래머스] 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;
}
댓글남기기