알고리즘 - 기능 개발
2025. 10. 24. 15:53ㆍ알고리즘
각 기능이 배포되는 시간을 계산한 후 먼저 배포가 가능한 배포일을 기준으로 함께 배포될수 있는것들을 빼는 것
최종적으로 각 배포마다 몇개의 배포가 진행되는지를 출력하는 것.
배포시간까지 남은 일수를 저장해둘 큐를 만들어 놓은 후
해당 일자에 배포되는 것들의 개수를 카운트해서 최종적으로 배열에 저장하여 출력하는 출이 방식 사용
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
// 배포 시간 담을 큐
Deque<Integer> deque = new ArrayDeque<>();
// 정답 리스트
List<Integer> list = new ArrayList<>();
for (int i = 0; i<progresses.length; i++) {
int leftTime = 100 - progresses[i];
// 배포 시간 계산
int leftDay = (int) Math.ceil((double) leftTime/speeds[i]);
deque.addLast(leftDay);
}
while(!deque.isEmpty()) {
int productCount = 1;
// 배포 날짜
int today = deque.pollFirst();
while(!deque.isEmpty()) {
int nextToday = deque.peekFirst();
if (nextToday <= today) {
deque.pollFirst();
productCount++;
} else {
break;
}
}
list.add(productCount);
}
int[] answer = new int[list.size()];
for (int i = 0; i<list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}'알고리즘' 카테고리의 다른 글
| 알고리즘 - 합승 택시 요금 (0) | 2025.10.28 |
|---|---|
| 알고리즘 - 디스크컨트롤러 (0) | 2025.10.24 |
| 알고리즘 - 입국 심사 (0) | 2025.10.23 |
| 알고리즘 - 섬 연결하기 (크루스칼 알고리즘) (0) | 2025.10.23 |
| 알고리즘 - 가장 큰 수 (0) | 2025.10.23 |