function solution(order) {
// ✅ order 배열의 현재 인덱스 정보를 갖는 변수를 추가로 선언한다
let curIndex = 0;
let stack = [];
for (let i = 1; i <= order.length; i++) {
stack.push(i);
while (stack.length > 0 && order[curIndex] === stack.at(-1)) {
curIndex++;
stack.pop();
}
}
return curIndex;
}
입력값의 제한은 다음과 같습니다.
일단 주어진 order 배열에 대해서 이중 for문을 돌리는 건 무리가 있겠다고 생각했습니다.
보조 컨테이너에 잠시 물건을 두고 조건이 만족하면 꺼낸다는 점에서 스택을 사용해야겠다는 생각이 들었습니다.
스택을 사용하는 점에서 Lv.2 뒤에있는큰수찾기 문제와 비슷함을 느꼈습니다.
핵심은 1부터 5까지 for문을 돌려 해당하는 변수를 stack 배열에 넣는 것입니다.
1부터 5까지 반복문을 돌리는 이유는 박스들이 컨테이너 위에 1부터 5까지 순서대로 놓여있는 상태로 시작하기 때문입니다.