https://programmers.co.kr/learn/courses/30/lessons/42586
큐를 사용하여 구현함
해당 기능 완료하는데 걸리는 날을 미리 계산하여 Queue에 저장함
import java.util.*;
// 기능개발
// 큐 사용(병렬 스케줄링)
// 각각의 기능 개발
// 순서대로 배포 되야함
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> results = new ArrayList<>();
// 해당 기능 완료하는데 걸리는 날 Queue
Queue<Integer> q = new LinkedList<>();
int day = 0;
for(int i=0; i<progresses.length; i++){
if((100 - progresses[i]) % speeds[i] == 0 ){
day = (100 - progresses[i]) / speeds[i];
}
else{
day = (100 - progresses[i]) / speeds[i];
day += 1;
}
q.offer(day);
}
// 7 3 9
int cnt;
while(!q.isEmpty()){
// 기능 배포 수
cnt = 0;
// 첫 번째 기능 걸리는 날보다 작은 날 까지 배포 가능하므로 cnt++
for(int i=0; i<q.size(); i++){
if(q.peek() >= (int)q.toArray()[i]){
cnt++;
}else{
break;
}
}
// 가능한 기능 전부 배포 했으므로 poll
for(int i=0; i<cnt; i++){
q.poll();
}
// 몇 개의 기능 배포했는지 저장
results.add(cnt);
}
// ArrayList -> array 변환
int[] answer = new int[results.size()];
int idx = 0;
for(int result : results){
answer[idx++] = result;
}
return answer;
}
}
'Development Logs > Algorithms' 카테고리의 다른 글
[JAVA] 프로그래머스 : 더 맵게 (코딩테스트 고득점 kit > 힙(Heap)) (0) | 2020.07.15 |
---|---|
[JAVA] 프로그래머스 : 베스트앨범 (코딩테스트 고득점 kit > 해쉬) (0) | 2020.07.14 |
[JAVA] 프로그래머스 : 쇠막대기 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |
[JAVA] 프로그래머스 : 주식가격 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |
[JAVA] 프로그래머스 : 프린터 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |