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
을 찾고...이런 과정을 밟아간다면
시간 초과를 해결 할 수 없다.