[프로그래머스 | Javascript] 햄버거 만들기

박기영·2022년 11월 9일
1

프로그래머스

목록 보기
85/126

solution

function solution(ingredient) {
    let stack = [];
    let count = 0;
    
    ingredient.forEach((item) => {
        stack.push(item);
        
        if(stack.length >= 4){
            const hamburger = stack.slice(-4).join("");
            
            if(hamburger === "1231"){
                stack.pop();
                stack.pop();
                stack.pop();
                stack.pop();
            
                count++;
                }    
            }
        }
    )
    
    return count;
}

시간 초과를 해결한다고 별의별 방법을 다 써봤는데,
결국 몇 번 실패했던 스택 구조를 몇 번 수정해서야 통과했다.
아마 시간 초과로 고생하신 많은 분들이 위 풀이가 본인이 해봤던 방법과 정말 한 끗 차이라는 것을 느끼실거다.

중요한 포인트는 스택의 길이가 4 이상인 경우부터 처리를 바로바로 해버리는 것과,
1231을 만들기 위한 join()을 4개의 문자에 대해서만 진행하는 것이다.

혹여 모든 문자열에 대해 join()을 하고 1231을 찾고...이런 과정을 밟아간다면
시간 초과를 해결 할 수 없다.

참고 자료

reasonz님 블로그

profile
나를 믿는 사람들을, 실망시키지 않도록

0개의 댓글