본문 바로가기
자바스크립트 코딩테스트

프로그래머스 Level 1 - 햄버거 만들기 (Javascript)

by 준벨롭 2023. 11. 23.

문제

답안

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