https://programmers.co.kr/learn/courses/30/lessons/42586
import java.util.Arrays;
import java.util.Stack;
class Solution {
public static int[] solution(int[] progresses, int[] speeds) {
int[] answer = new int[progresses.length - 1];
Stack<Pair<Integer, Integer>> stack = new Stack<>();
for (int i = progresses.length - 1; i >= 0; i--) {
stack.add(new Pair<>(progresses[i], speeds[i]));
}
int pivot = 0;
boolean isDeploy = false;
while (stack.size() > 0) {
if (stack.peek().getKey() >= 100) {
// 배포 시작
isDeploy = true;
answer[pivot] += 1;
stack.pop();
} else {
if (isDeploy) {
pivot++;
isDeploy = false;
}
for (int i = 0; i < stack.size(); i++) {
stack.set(i, new Pair<>(stack.get(i).getKey() + stack.get(i).getValue(), stack.get(i).getValue()));
}
}
}
return Arrays.stream(answer).filter(i -> i != 0).toArray();
}
static class Pair<K, V> {
Pair(K key, V value) {
this.key = key;
this.value = value;
}
K key;
V value;
K getKey() {
return key;
}
V getValue() {
return value;
}
}
}
'Algorithm' 카테고리의 다른 글
프로그래머스 Dev-Matching 앱 개발자(2) - 후기 (0) | 2020.06.08 |
---|---|
프로그래머스 Dev-Matching 앱 개발자(1) - 후기 (0) | 2020.06.08 |
안드로이드 간단 알고리즘 (0) | 2020.06.01 |
프린터 LV2 (0) | 2020.05.31 |
탑 LV2 (0) | 2020.05.30 |