자바스크립트 코딩테스트
프로그래머스 Level 1 - 햄버거 만들기 (Javascript)
준벨롭
2023. 11. 23. 17:12
문제
답안
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