https://programmers.co.kr/learn/courses/30/lessons/42586
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
List<Integer> list = new ArrayList<>();
int max = ((int)Math.ceil((100.0 - progresses[0]) / speeds[0]));
int remain = 1;
for (int i = 1; i < speeds.length; i++) {
int temp = ((int)Math.ceil((100.0 - progresses[i]) / speeds[i]));
if (temp > max) {
list.add(remain);
remain = 1;
max = temp;
}
else {
remain++;
}
}
list.add(remain);
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
스택/큐 유형이어서 처음에는 어떻게 이걸 스택이나 큐로 풀어야하나 했지만 다른사람의 코드를 보니 대단한 알고리즘은 아니어서 평범하게 풀어도 상관없는것같다.
배열을 돌면서 temp
을 계산하고 max
와 비교해 작으면 remain
을 더하고(추가된 기능 개수) 크면 list
에 넣고 remain
을 초기화한다. 마지막에 남은 remain
을 list
에 넣고 int
배열로 전환후 리턴