728x90
반응형
문제설명
문제분석
이 문제는 입력값인 ingredient 요소를 하나씩 stack에 쌓고, stack에 쌓인 최근 4개가 햄버거를 만들 수 있는 순서대로 쌓여있는지 확인합니다. 만약 햄버거를 만들 수 있다면, stack의 4개를 빼내고 answer 카운트를 1증가합니다.
- ingredient를 탐색하며 stack에 하나씩 추가한다.
- stack에 쌓인 최근 4개의 요소로 햄버거를 만들 수 있는지 검사한다.
- 햄버거를 만들 수 있다면 stack의 최근 4개 요소를 제거하고, answer를 증가한다.
요약했으니, 코드를 짜보겠습니다.
이해하기 쉽게 코드작성하기
function solution(ingredient) {
var answer = 0;
const stack = [];
for(let i of ingredient) {
// stack에 ingredient 요소 추가
stack.push(i);
if(canMakeBugger(stack)) {
answer++;
stack.length -= 4;
}
}
return answer;
}
// stack 내 최근 4개의 요소로 햄버거를 만들 수 있는지 검사
function canMakeBugger(arr) {
const [isFirstOne, isTwo, isThree, isSecondOne] = arr.slice(arr.length-4);
return (isFirstOne === 1
&& isTwo === 2
&& isThree === 3
&& isSecondOne === 1);
}
코드 설명
분석한 대로 작성한 코드라 부가 설명은 없습니다. 위 코드와 같은 로직을 메소드를 이용해 깔끔하게 나타내면 다음과 같습니다.
function solution(ingredient) {
const stack = [];
return ingredient.reduce((a,c) => {
stack.push(c);
if(canMakeBugger(stack)) {
stack.length -= 4;
a += 1;
}
return a;
}, 0);
}
function canMakeBugger(arr) {
const [isFirstOne, isTwo, isThree, isSecondOne] = arr.slice(arr.length-4);
return (isFirstOne === 1
&& isTwo === 2
&& isThree === 3
&& isSecondOne === 1);
}
728x90
반응형
'Practice for coding test' 카테고리의 다른 글
프로그래머스 - Level 1. 키패드 누르기 / JavaScript (js) (0) | 2023.02.19 |
---|---|
프로그래머스 - Level 1. 로또의 최고 순위와 최저 순위 / JavaScript (js) (0) | 2023.02.18 |
프로그래머스 - Level 2. JadenCase 문자열 만들기 / JavaScript (js) (0) | 2023.02.16 |
프로그래머스 - Level 1. 소수 만들기 / JavaScript (js) (0) | 2023.02.15 |
프로그래머스 - Level 1. 콜라 문제 / JavaScript (js) (0) | 2023.02.14 |