728x90
2023.07.05 - [Coding Test/programmers] - 기능 개발 (큐)
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> q = new LinkedList<>();
for (int i=0; i<progresses.length; i++) {
q.add(i);
}
List<Integer> result = new ArrayList<>(); // 동시완료 작업 수
int days = 0; // 현재
int count = 0; // 동시완료 작업수
while (!q.isEmpty()) {
int idx = q.poll();
int expiration = (int) Math.ceil((double) (100-progresses[idx]) / speeds[idx]); // 작업해야하는일수
// 이전 작업과 종료되는지, 추가 작업 필요한지
if (expiration > days) {
if (days != 0){
result.add(count);
count = 0;
}
days = expiration;
}
count++;
}
result.add(count);
return result.stream().mapToInt(Integer::intValue).toArray();
}
}
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] dayOfend = new int[100];
int day = -1;
for(int i=0; i<progresses.length; i++) {
while(progresses[i] + (day*speeds[i]) < 100) {
day++;
}
dayOfend[day]++;
}
return Arrays.stream(dayOfend).filter(i -> i!=0).toArray();
}
}
728x90