JS) 배열 부분 검사에 스택 활용하기

김동욱·2024년 11월 20일

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;
}
profile
갓겜만들어야지

0개의 댓글