[프로그래머스-Level 1] [JavaScript] 햄버거 만들기 - 스택(Stack) 활용
2022. 11. 27. 18:00ㆍ알고리즘/프로그래머스 알고리즘 공부
반응형
[문제]
햄버거를 빵-야채-고기-빵 순서로 포장을 합니다. 숫자 1-2-3-1로 표현했을 때, 이 조합 순서대로 햄버거를 포장한다고 가정하여 재료들이 주어졌을 때 총 몇 개의 햄버거를 포장할 수 있는지 계산하는 문제입니다. 예를 들어 [2, 1, 1, 2, 3, 1, 2, 3, 1]의 배열이 입력으로 주어졌을 때 포장되는 햄버거는 총 2개입니다.
[알고리즘]
스택을 활용할 수 있습니다. (스택이 아닌 다른 방법으로도 당연히 해결 가능합니다)
[풀이]
아래 주석에 설명을 해놓은 것을 참고하시면 되며 먼저 burgerStack이란 배열을 하나 선언해주고, 그 스택 배열에 ingredient 배열의 요소를 push로 넣어줍니다. 그 다음 Stack의 길이가 4 이상인 경우, 맨 뒤의 Stack의 요소들이 각각 1 2 3 1인 경우 pop() 메소드를 4번 발생시켜서 push된 요소들을 제거해주고 count에 숫자 1을 더해주고 최종적으로 이 burgerCount를 return하면 됩니다.
function solution(ingredient) {
// ingredient (1,2,3,1만 포장)
let burgerCount = 0;
const burgerStack = [];
// ingredient 배열의 요소에 접근하기 위한 반복문
for (let i = 0; i < ingredient.length; i++) {
// burgerStack에 push하여 배열에 넣어줍니다.
burgerStack.push(ingredient[i]);
// burgerStack의 현재 길이를 구합니다.
let len = burgerStack.length;
// burgerStack의 길이가 4가 되지 않을 경우에는 다음 요소로 넘어갑니다.
if (burgerStack.length < 4) {
continue;
}
else if (burgerStack[len - 4] === 1 &&
burgerStack[len - 3] === 2 &&
burgerStack[len - 2] === 3 &&
burgerStack[len - 1] === 1) {
// 1 2 3 1의 조건을 충족했을 때 pop를 4번해줘서 뒤의 요소 4개를 제거합니다.
for (let j = 0; j < 4; j++) {
burgerStack.pop();
}
// count 해줍니다.
burgerCount++;
}
}
return burgerCount;
}
반응형
'알고리즘 > 프로그래머스 알고리즘 공부' 카테고리의 다른 글
[프로그래머스-Level 1] [JavaScript] 부족한 금액 계산하기 (0) | 2022.11.29 |
---|---|
[프로그래머스-Level 1] [JavaScript] 과일 장수 - 배열, 최솟값 이용 (0) | 2022.11.28 |
[프로그래머스-Level 1] [JavaScript] 푸드 파이트 대회 - sort(정렬) 활용 (0) | 2022.11.24 |
[프로그래머스-Level 1] [JavaScript] 기사단원의 무기 - 약수의 개수 구하기 (0) | 2022.11.23 |
[프로그래머스-Level 1] [JavaScript] 콜라 문제 - 재귀 함수 활용 (0) | 2022.11.23 |