문제
답안
function solution(ingredient) {
var answer = 0;
//ingredient의 i ~ i+3 번째 배열이 1,2,3,1이면 answer를 1 증가
//증가 후 배열의 1,2,3,1을 제거한다.
//i를 i-4 해줌으로 제거된 후 이전 배열을 확인한다. (i-3으로 바꿔주면 for문 후에 i-2로 바뀌어버림)
for(let i = 0; i < ingredient.length; i++){
if(ingredient[i] == 1 &&
ingredient[i+1] == 2 &&
ingredient[i+2] == 3 &&
ingredient[i+3] == 1){
answer++;
ingredient.splice(i,4);
i = i - 4;
}
}
return answer;
}
후기
i = i - 3 으로 바꿔줘도 동작한다.(개선 가능한 부분)
예를 들어보면, 1,2,1,2,3,1,3,1 이 경우에서 i = 2 일때, 1231을 제거하면 1,2,3,1이 남고 i=3이 된다.
여기서 i에 3을 빼면 다시 i는 0이 되기 때문에 i에서 3을 빼주는 것이다.
만약 1,2,3,1,2,3,1,1 일 경우에는 i가 0일때 1231을 제거하고 2,3,1,1만 남기 때문에 4를 빼줄 이유가 없다.
728x90
'자바스크립트 코딩테스트' 카테고리의 다른 글
프로그래머스 Level 1 - 완주하지 못한 선수 (Javascript) (1) | 2023.11.25 |
---|---|
프로그래머스 Level 1 - 문자열 나누기 (Javascript) (2) | 2023.11.24 |
프로그래머스 Level 1 - 바탕화면 정리 (Javascript) (2) | 2023.11.22 |
프로그래머스 Level 1 - 크레인 인형뽑기 게임 (Javascript) (3) | 2023.11.21 |
프로그래머스 Level 1 - 둘만의 암호 (Javascript) (2) | 2023.11.20 |