각 작업의 소요일자를 구한 후, 선작업 부터 같이 배포가능한 원소들을 뽑아서(소요일자가 자신보다 작은것)
배열에서 remove 시키는 방법으로 구현하였다.
배열에서 원소를 지워나가는 가장 안전한 방법은 iterator를 사용하는 것.
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer = {};
List<Integer> temp = new ArrayList<>();
List<Integer> tempAns = new ArrayList<>();
// 각 작업이 배포될 수 있는 일자를 별도로 담아 놓는다.
for (int i = 0; i < progresses.length; i++) {
int progress = progresses[i];
int speed = speeds[i];
temp.add((int) Math.ceil((100-progress) / (double) speed));
}
while (temp.size() > 0) {
int prev = temp.get(0);
int d = 0;
for(Iterator<Integer> iter = temp.iterator(); iter.hasNext();) {
int now = iter.next();
// 앞에서 부터 자신과 같이 배포 가능한 원소를 지워나가며 숫자를 별도로 담는다
if(now <= prev) {
d++;
iter.remove();
} else {
break;
}
}
tempAns.add(d);
}
answer = new int[tempAns.size()];
for (int i = 0; i < tempAns.size(); i++) {
answer[i] = tempAns.get(i);
}
return answer;
}
}
출처: 프로그래머스 코딩 테스트 연습,
https://programmers.co.kr/learn/challenges
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (정렬) 가장 큰 수 (0) | 2021.03.25 |
---|---|
[프로그래머스] (스택/큐) 프린터 (0) | 2021.03.23 |
[프로그래머스] (스택/큐) 주식가격 (0) | 2021.03.22 |
[프로그래머스] (정렬) K번째 수 (0) | 2021.03.22 |
[프로그래머스] (스택/큐) 다리를 지나는 트럭 (0) | 2021.03.22 |
댓글