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