문제
풀이
- 아래에서부터 위로 쌓인다 -> 스택
스택 (First-In Last-Out)
큐 (First-In First-Out)
- array.slice(start, end) : 배열의 일부분을 추출하여 새로운 배열을 반환한다. 원본 배열은 변경되지 않는다.
- splice : 배열에서 요소를 추가, 제거 또는 교체하는 작업을 수행한다. 이때 원본 배열이 수정된다.
function solution(ingredient) {
let stack = [];
let burgers = 0;
for (let val of ingredient) {
stack.push(val);
if (stack.slice(-4).join('') === '1231') {
stack.splice(-4);
burgers++;
}
}
return burgers;
}
다른 풀이
function solution(ingredient) {
let count = 0;
for (let i = 0; i < ingredient.length; i++) {
if (ingredient.slice(i, i + 4).join('') === '1231') {
count++;
ingredient.splice(i, 4);
i -= 3;
}
}
return count;
}
function solution(ingredient) {
let stk = [];
let count = 0;
for (let i = 0; i < ingredient.length; i++) {
stk.push(ingredient[i]);
if (
stk[stk.length-1] === 1 &&
stk[stk.length-2] === 3 &&
stk[stk.length-3] === 2 &&
stk[stk.length-4] === 1
) {
count++;
stk.splice(-4);
}
}
return count;
}