#
문제 설명
택배상자를 트럭에 싣는 일
조건
크기가 모두 같음
번호가 증가하는 순서
대로한 방향으로만 진행
이 가능순서대로
(1번 상자부터) 상자를 내릴 수 있음순서
에 맞게보관
보조 컨테이너 벨트
를 추가로 설치하여 이 위에 실음앞 뒤로 이동
이 가능맨 앞의 상자만
뺄 수 있음매개 변수
order
반환값
order | result |
---|---|
[4, 3, 1, 2, 5] | 2 |
[5, 4, 3, 2, 1] | 5 |
function solution(order) {
let result = 0;
const stack = [];
const items = Array.from({length: order.length}, (_, i) => i+1);
items.forEach((v) => {
stack.push(v);
while (stack.length !== 0 && stack.at(-1) === order[result]) {
stack.pop();
result++;
}
})
return result;
}
풀이
stack 을 통해 solution 구하기
Shift 와 Unshift
Or
Push 와 Pop
unshift 및 shift 작업은 모두 배열에 있는
모든 요소의 인덱스를 이동해야 하기 때문에 O(n)이 될 수 있음
대조적으로, push 와 pop은 일반적으로 O(1)이므로 스택 작업에
훨씬 더 효율적
shift 와 unshift 는 배열의 시작 부분에
추가하거나 제거되는 로직이라 기존의 요소들이
+1 혹은 -1 만큼 인덱스가 이동해서 O(n)