1. 문제 풀이 아이디어
- 문제에서 기존 컨테이너 벨트가
Queue
구조로 되어 있어Queue
를 사용해야 한다고 생각할 수 있지만, 실제로는Stack
만으로도 문제를 해결할 수 있다.
2. 나의 정답 코드
class Solution {
public int solution(int[] order) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (int i = 1; i <= order.length; i++) {
stack.add(i);
while (!stack.isEmpty()) {
if (stack.peek() == order[answer]) {
stack.pop();
answer++;
} else {
break;
}
}
}
return answer;
}
}
3. 정리
order
의 크기만큼for
문을 실행하며,stack
에 현재 값을 넣고,stack
이 비어 있지 않은 동안while
문을 실행한다.
stack
의peek
값이order[answer]
와 같으면stack
에서 값을 제거하고answer
를 증가시킨다.
- 값이 다를 경우
while
문을 빠져나온다.
- 이 과정을 반복하여 문제를 해결할 수 있다.
Share article