[프로그래머스 - JAVA] 스택/큐 - Level 2 기능개발
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer = {};
Vector<Integer> vec = new Vector<>();
for(int i = 0 ; i < progresses.length; i++){
int count = 0;
for(int j = i ; j < progresses.length; j++)
progresses[j] += speeds[j];
if(progresses[i] >= 100){
for(int j = i ; j < progresses.length; j++){
if(progresses[j] >= 100)
count++;
else
break;
}
vec.add(count);
}
i += count - 1;
}
answer = new int[vec.size()];
for(int i = 0 ; i < vec.size(); i++)
answer[i] = vec.get(i);
return answer;
}
}
public int[] solution(int[] progresses, int[] speeds) {
Stack<Integer> stack = new Stack<Integer>();
for (int i = progresses.length - 1; i >= 0; i--)
stack.add((100 - progresses[i]) / speeds[i] + ((100 - progresses[i]) % speeds[i] > 0 ? 1 : 0));
List<Integer> s = new ArrayList<Integer>();
while (!stack.isEmpty()) {
int cnt = 1;
int top = stack.pop();
while (!stack.isEmpty() && stack.peek() <= top) {
cnt++;
stack.pop();
}
s.add(cnt);
}
int[] answer = new int[s.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = s.get(i);
}
return answer;
}