stack
1. 보조 컨테이너 벨트는 앞 뒤로 이동이 가능하지만 입구 외에 다른 면이 막혀 있어서 맨 앞의 상자만 뺄 수 있습니다(즉, 가장 마지막에 보조 컨테이너 벨트에 보관한 상자부터 꺼내게 됩니다).
라는 조건을 통해 보조 컨테이너 벨트를 stack
으로 구현한다.
2. 보조 컨테이너에 상자를 하나씩 옮겨 담는다.
3. 만약 보조 컨테이너에 마지막으로 담은 상자가 택배 기사님이 원하는 상자 순서
와 일치할 때 하나씩 보조 컨테이너에서 트럭에 싣는다. (answer++)
+) 일치하지 않을 때 까지 계속 트럭에 옮긴다.
4. answer(트럭에 담긴 상자 수)를 리턴한다.
import java.util.*;
class Solution {
public int solution(int[] order) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int i = 1; i <= order.length; i++) {
stack.push(i);
while (stack.size() > 0 && stack.peek() == order[answer]) {
stack.pop();
answer++;
}
}
return answer;
}
}