https://school.programmers.co.kr/learn/courses/30/lessons/133502
배열로 들어온 ingredient 값을 join을 통해 문자열로 변환시킨 뒤 stack 변수에 저장하여
stack의 길이만큼 for 문을 돌며 indexOf 를통해 1231이 있는지 찾고 ( indexOf는 찾는 값이 없다면 -1이 리턴된다 )
찾았다면 replace를 통해 1231을 지워주고 answer을 1씩 더한다
function solution(ingredient) {
var answer = 0;
var stack = ingredient.join("");
for (let i = 0; i < stack.length; i++) {
if(stack.indexOf('1231') !== -1) {
stack = stack.replace('1231', "");
answer += 1
}
}
return answer;
}
\
이런식으로 코드를 짯는데
아주 그냥 코드가 시간을 초과 해버렸구여,,, indexOf가 많이 잡아먹나??.. 알아봐야할듯,,,,
function solution(ingredient) {
var answer = 0;
var ingredient = ingredient.join("");
var stack = "";
for (let i = 0; i < ingredient.length; i++) {
stack += ingredient[i];
if (stack.length >= 4) {
let search = stack.slice(-4);
if (search === '1231') {
answer += 1
stack = stack.slice(0, -4)
}
}
}
return answer;
}
문자열로도 풀어봤더니 시간초과래.!!!!!!!!!!!!!!
다들 stack으로 풀었던데 정녕 stack 밖에없는 거시여!!?
결론 코드
function solution(ingredient) {
var answer = 0;
var ingredient = ingredient.join("");
var stack = [];
for (let i = 0; i < ingredient.length; i++) {
stack.push(ingredient[i]);
if (stack.length >= 4) {
let search = stack.slice(-4).join("");
if (search === '1231') {
stack.pop();
stack.pop();
stack.pop();
stack.pop();
answer++;
}
}
}
return answer;
}
728x90
'Algorithm' 카테고리의 다른 글
프로그래머스 - 3진법 뒤집기(자바스크립트) (0) | 2023.03.02 |
---|