Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
https://school.programmers.co.kr/learn/courses/30/lessons/42586?language=java
풀이
나의 풀이
- 개발소요일자 큐를 만들어 차례대로 저장한다.
- 첫 번째 프로세스의 개발소요일자를 가져와서 자기보다 낮은 프로세스의 수를 확인하고 그만큼 큐에서 제거하면서 카운팅해서 한 번에 배포할 수 있는 프로세스의 개수를 구한다.
- 차례대로 저장한다음 배열로 변환해 반환한다.
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> days = new LinkedList<>();
for(int i=0; i<progresses.length; i++) {
int day = 0;
while(progresses[i] < 100) {
progresses[i] += speeds[i];
day++;
}
days.add(day);
}
ArrayList<Integer> deploysAL = new ArrayList<>();
// 첫 번째 day 가져와서 자기보다 낮은 애들 개수 확인하고 그만큼 remove
int day = days.poll();
int cnt = 1;
while(days.size() > 0) {
if(day >= days.peek()) {
cnt++;
days.remove();
} else {
deploysAL.add(cnt);
day = days.poll();
cnt = 1;
}
if(days.size() == 0) deploysAL.add(cnt);
}
int[] deploys = deploysAL.stream().mapToInt(x->x).toArray();
return deploys;
}
}
'Dev > PS' 카테고리의 다른 글
[프로그래머스-코딩테스트 연습] 프로세스 (0) | 2023.12.05 |
---|---|
[프로그래머스-코딩테스트 연습] 올바른 괄호 (0) | 2023.12.05 |
[프로그래머스-코딩테스트 연습] 같은 숫자는 싫어 (0) | 2023.12.05 |
[프로그래머스-코딩테스트 연습] 베스트앨범 (0) | 2023.12.05 |
[프로그래머스-코딩테스트 연습] 의상 (0) | 2023.12.05 |