https://school.programmers.co.kr/learn/courses/30/lessons/133502
프로그래머스 햄버거 만들기 문제
내가 처음 작성한 코드는 for문으로 순서대로 4개씩 검사하면서
햄버거 재료가 있으면 결과값에 반영하고 3번째 전 재료부터 다시 검사하는 코드였다.
//68. 햄버거 만들기
function solution(ingredient) {
var recipe = [1,2,3,1];
var answer = 0;
for(let i=0; i<=ingredient.length-4; i++){
if(ingredient.slice(i, i+4).toString() === recipe.toString()){
answer++;
ingredient.splice(i, 4);
i -= 3;
if(i<0) i = 0;
}
}
return answer;
}
테스트 케이스 2개에서 틀렸고, 반례를 찾지도 못했다.
튜터님한테 질문했더니, for문에서 index를 조작하는 코드는 지양해야 한다고 한다.
index를 뒤로 보내는 대신, stack을 이용해서 햄버거 재료가 순서대로 모이는지 확인했더니 문제가 풀렸다.
//68. 햄버거 만들기 스택문제였네
function solution(ingredient) {
var recipe = [1,2,3,1];
var answer = 0;
let stack = [];
for(let i=0; i<=ingredient.length; i++){
stack.push(ingredient[i]);
if(stack.slice(-4).toString() === recipe.toString()) {
answer++;
stack.splice(-4);
}
}
return answer;
}