알고리즘

[알고리즘]프로그래머스 LV.1 - 크레인 인형뽑기(JS)

로돌씨 2024. 6. 25. 16:26

문제

 

풀이

function solution(board, moves) {
    var answer = 0;
//인형을 담을 바구니를 생성하고 moves 에 해당하는 인덱스(+1)를 바구니에 담아준다. 인형을 뽑으면 해당하는 인덱스는 0으로 바꿔준다 만약 뽑으려는 인덱스가 0일 시에는 인형이 안담겨있다는 뜻이므로(2차원 배열의 마지막 인덱스의 배열에서 0일경우) 아무일도 일어나지 않음
    var basket = [];
 
        for(let i = 0; i <moves.length; i++){
            let pickerPosition = moves[i]
            for(let x of board){
                if(x[pickerPosition-1] == 0){
                continue;
                }else if(x[pickerPosition-1] !== 0){
                    basket.push(x[pickerPosition-1])
                    x[pickerPosition-1] = 0;
                    break;
                }
                
       
            }
        }
    for(let i = 0 ; i < basket.length; i++){
        if(basket[i] == undefined){
            basket.splice( i , 1 )
        }
    }
    
    for(let i = 0 ; i < basket.length; i++){
        if(basket[i] == basket[i+1]){
            answer += 2;
            basket.splice(i,2);
            // 0 부터 시작을 하니 바로 다음루프로 돌아가 1부터 시작하게됨 -> i를 -1로 설정하여 0부터 다시 제대로 배열을 순회 할 수 있게되었다.
            i = -1;
        }
    }
    return answer;
}

 

처음에 i를 0으로 지정하니 테스트 케이스 1 , 2 에서 계속 에러가 났었다.

i가 0이게 되면 다음 루프에서는 i가 증가하게 되어 1부터 시작하게되어서 그런거였다. -1로 지정해주니 배열을 처음부터 잘 순회하여 에러가 해결되었다!