https://programmers.co.kr/learn/courses/30/lessons/42586#qna
import java.util.Stack;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer = new int[progresses.length];
Stack<Integer> stack = new Stack<>();
// 배포에 걸리는 일수를 answer에 담는다.
for (int i = 0; i < progresses.length; i++) {
int percent = 100 - progresses[i];
int days = percent / speeds[i];
int remainDays = percent % speeds[i];
if (remainDays > 0) {
days += 1;
}
answer[i] = days;
}
//answer를 반복하면서 위 풀이대로 stack에 담는다.
int check = 0;
for (int i = 0; i < answer.length; i++) {
if (i == 0) {
stack.push(1);
check = answer[i];
} else {
if (check >= answer[i]) {
Integer pop = stack.pop();
stack.push(pop + 1);
} else {
stack.push(1);
check = answer[i];
}
}
}
// stack을 array로 변환하여 return
return stack.stream().mapToInt(Integer::intValue).toArray();
}
}
잘했어요