[알고리즘] 햄버거 만들기 js
개요
상수에게 전해지는 재료의 정보를 나타내는 정수 배열 ingredient가 주어졌을 때, 상수가 포장하는 햄버거의 개수를 return 하도록 solution 함수를 완성하시오.
1,2,3,1으로만 햄버거를 만들 수 있다 그리고 딱히 명시하진 않았지만 햄버거가 계속 쌓이고있다고 가정했으니 스택 자료구조를 떠올릴 수 있다.
풀이
이제 스택을 만들어 넣고 빼면 되는데 1(빵)이 나오는 경우만 체크해보고 나머지 경우는 전부 스택에 넣은 뒤 만약 빵이 나왔다면 가장 위 3개를 pop으로 빼서 tmp 배열에 넣어 비교해본 뒤 순서가 일치하지 않으면 다시 순서대로 넣고 조건으로 트리거 된 빵을 추가로 넣어주면 된다
function solution(ingredient) {
let answer = 0;
const stack = [];
const len = ingredient.length;
stack.push(ingredient[0]);
stack.push(ingredient[1]);
stack.push(ingredient[2]);
for (let i = 3; i < len; i++) {
if (ingredient[i] === 1 && stack.length > 2) {
const tmp = [];
let flag = true;
while (tmp.length < 3) {
tmp.unshift(stack.pop());
}
for (let j = 0; j < 3; j++) {
if (tmp[j] !== j + 1) flag = false;
}
if (flag) answer += 1;
else stack.push(...tmp, 1);
} else stack.push(ingredient[i]);
}
return answer;
}