반응형
문제 URL
https://school.programmers.co.kr/learn/courses/30/lessons/42586
문제 설명
소프트웨어 개발 팀이 진행 중인 각 기능은 진도가 100%가 되어야 배포 가능합니다. 각 기능은 개발 속도가 다르며, 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포될 수 있습니다. 이때 각 배포마다 몇 개의 기능이 배포되는지를 계산하는 문제입니다.
나의 풀이
import java.util.*
class Solution {
public ArrayList<Integer> solution(int[] progresses, int[] speeds) {
ArrayList<Integer> answer = new ArrayList<>();
ArrayDeque<Integer> queue = new ArrayDeque<>();
// 1. 각 작업의 완료까지 남은 일수를 계산하여 큐에 저장
for (int i = 0; i < progresses.length; i++) {
int remainingDays = (int) Math.ceil((100.0 - progresses[i]) / speeds[i]);
queue.addLast(remainingDays);
}
// 2. 큐를 순회하며 배포 처리
while (!queue.isEmpty()) {
int firstNum = queue.pollFirst(); // 첫 번째 작업의 남은 일수
int sum = 1; // 현재 배포에 포함될 작업 수
// 다음 작업들이 첫 번째 작업과 함께 배포 가능한지 확인
while (!queue.isEmpty() && queue.peekFirst() <= firstNum) {
queue.pollFirst();
sum++;
}
answer.add(sum); // 배포 그룹의 크기 저장
}
return answer;
}
}
- 각 작업의 완료까지 남은 일수를 계산하여 큐(queue)에 저장힙니다.
- Math.ceil을 사용하여 소수점을 올림 처리합니다.
- 큐를 순회하면서 배포 가능한 작업들을 그룹화하여 결과를 도출합니다.
반응형
'알고리즘 > Java' 카테고리의 다른 글
[프로그래머스] 다리를 지나는 트럭 - 42583(Java) (0) | 2025.01.02 |
---|---|
[프로그래머스] 카드 뭉치 - 159994 (Java) (0) | 2024.12.27 |
[백준] 1158. 요세푸스 문제 (Java8) - ArrayDeque 활용 (0) | 2024.12.20 |
[프로그래머스] 컨트롤 제트 - 120853 (Java) (0) | 2024.12.18 |
[프로그래머스] 같은 숫자는 싫어 - 12906 (Java) (0) | 2024.12.17 |