JAVA/Algorithm

[프로그래머스/java] 기능개발 (큐)

nang. 2020. 12. 25. 22:47
반응형
SMALL

https://programmers.co.kr/learn/courses/30/lessons/42586

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        Queue<Integer> queue = new LinkedList<>();
        List<Integer> deployList = new ArrayList<>();
        
        for(int i = 0; i < progresses.length; i++) {
            int devDays = (int)Math.ceil((double)(100 - progresses[i]) / speeds[i]); // 작업 완료까지 걸리는 일 수 계산
            
            // 큐가 비어있지않고 큐의 맨 앞 수가 현재 구한 일 수(progresses 상 뒤에 것)보다 작으면
            if(!queue.isEmpty() && queue.peek() < devDays) {
                deployList.add(queue.size()); // 현재 큐에 저장된 개수를 alist에 저장
                queue.clear(); // 큐 비우기
            }
            
            queue.add(devDays); // 작업 완료까지 걸리는 일 수를 큐에 저장
        }
        
        deployList.add(queue.size());
        
        int[] answer = new int[deployList.size()];
        int size = 0;
        
        
        for(int a : deployList) 
            answer[size++] = a;
        
        return answer;
    }
}
반응형
LIST