문제
https://school.programmers.co.kr/learn/courses/30/lessons/131704
아이디어
i
를 1
부터 order
의 길이까지 증가시키면서 보조 컨테이너의 역할을 하는 stack
에 숫자를 넣고,
스택에서 꺼내야 하는 다음 상자를 꺼낼 수 있다면 꺼내고 결과를 카운팅한다.
소스코드
function solution(order) {
let answer = 0;
let cursor = 0;
const stack = [];
function isCursorInBoundary() {
return cursor < order.length;
}
function isStackNotEmpty() {
return stack.length > 0;
}
function isAbleToPopNextValue() {
return order[cursor] === stack[stack.length - 1];
}
for (let i = 1; i <= order.length; i++) {
stack.push(i);
while (isCursorInBoundary() && isStackNotEmpty() && isAbleToPopNextValue()) {
stack.pop();
cursor++;
answer++;
}
}
return answer;
}