개요
상수에게 전해지는 재료의 정보를 나타내는 정수 배열 ingredient가 주어졌을 때, 상수가 포장하는 햄버거의 개수를 return 하도록 solution 함수를 완성하시오.
1,2,3,1으로만 햄버거를 만들 수 있다 그리고 딱히 명시하진 않았지만 햄버거가 계속 쌓이고있다고 가정했으니 스택 자료구조를 떠올릴 수 있다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
이제 스택을 만들어 넣고 빼면 되는데 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;
}
'알고리즘' 카테고리의 다른 글
[알고리즘] 124나라의 숫자 js (0) | 2022.10.30 |
---|---|
[알고리즘] 키패드 누르기 js (0) | 2022.10.29 |
[알고리즘] 게임 맵 최단거리 (0) | 2022.10.29 |
동적 계획법과 냅색 알고리즘 (0) | 2022.10.28 |
BFS(너비 우선 탐색) (0) | 2022.10.24 |