문제

풀이
- 스택을 활용한다. 배달하는 순서에 맞는 상자 번호가 나올 때까지 스택에 삽입하고 배달하는 순서에 맞는 상자가 스택의 top과 일치한다면 pop을 하면서 +1
- 위 과정을 반복하되 배달 순서와 top이 더이상 일치하지 않으며 스택에 추가할 상자 번호가 없다면 반복문을 탈출한다.
유의할 점
- 탈출 조건을 생각하는데 시간이 꽤 소모되었다.
코드
import java.util.*;
class Solution {
public int solution(int[] order) {
Stack<Integer> s = new Stack<>();
int answer = 0;
int orderIdx = 0;
int currBox = 1;
boolean flag =true;
while(true){
while(s.isEmpty() || s.peek() != order[orderIdx]) {
if(currBox >order.length) {
flag = false;
break;
}
s.push(currBox++);
}
while (!s.isEmpty() && s.peek() == order[orderIdx]){
answer++;
s.pop();
orderIdx++;
}
if(!flag || orderIdx == order.length) return answer;
}
}
}