
처음엔 Queue로 구현했지만 List로 해도 무방할 것 같아서 List로 풀이해보았다.
1시간 넘게 해멨는데 그 이유는, 첫 요소와 다른 요소들을 비교했어야 하는데, 직전 요소와 다음 요소를 비교해서(...) 계속 오답이 나왔었다 ㅠㅠㅠ
if(timeline[i-1] >= timeline[i]) {...}
-->
if(max_ele >= timeline[i]) {...}
그 부분만 수정했더니 통과
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] timeline = new int[progresses.length];
for(int i = 0; i < progresses.length; i++) {
timeline[i] = (int)Math.ceil((100-progresses[i]) * 1.0 / speeds[i]);
}
List<Integer> lst = new ArrayList<>();
int cnt = 1;
int max_ele = timeline[0];
for(int i = 1; i < timeline.length; i++) {
if(max_ele >= timeline[i]) {
cnt++;
} else {
lst.add(cnt);
cnt = 1;
max_ele = timeline[i];
}
if(i == timeline.length-1) {
lst.add(cnt);
}
}
int[] answer = new int[lst.size()];
for(int i = 0; i < lst.size(); i++) {
answer[i] = lst.get(i);
}
return answer;
}
}