public int[] solution(int[] progresses, int[] speeds) {
ArrayList<Integer> arrayList = new ArrayList<>();
int cur = 0, flag = 0;
//cur = 앞에서부터 봤을 때 완료되지 않은 가장 앞에 있는 인덱스 번호
while (cur < progresses.length) {
for (int i = cur; i < progresses.length; i++) {
if (progresses[i] >= 100) continue;
progresses[i] += speeds[i];
// 진행상황이 100이 안됐을 경우 각각 진행상황마다 개발 속도만큼 더해줌
}
for (int i = cur; i < progresses.length; i++) {
if (progresses[i] < 100) break;
flag = i + 1;
//flag: 앞에 완성한 개발 갯수를 뛰어 넘어 다음 cur의 인덱스 번호를 알려줌
//ex) progress[0],[1] 2개가 진행상황이 100을 넘었을 때
// 다음부터는 3번째 부터 검사하기 위해flag=2
}
if (flag != cur) { //flag != cur 이라는 것은 앞에 완성된 개발이 있다는 것
arrayList.add(flag - cur);
cur = flag;
}
}
int[] answer = new int[arrayList.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = arrayList.get(i);
}
return answer;
}
Java
복사