코딩테스트

[JS] 2019 카카오 개발자 겨울 인턴십 > 크레인 인형뽑기 게임

차차한 2022. 9. 6. 15:40

드디어 풀어낸 인형뽑기 게임~!!!!!

막상 풀어보니까 엄청 어려운 문제는 아니었지만 문제 자체를 이해하는 거가 헷갈렸던..ㅠㅠ

function solution(board, moves) {
    
    var arr = [];
    var answer = 0;
    
    for(var j = 0; j < moves.length;j++){
        for(var i = 0; i < board.length;i++){

            if(board[i][moves[j]-1] != 0){
                arr.push(board[i][moves[j]-1]);
                board[i][moves[j]-1] = 0;
                
                if(arr[arr.length-2] == arr[arr.length-1]){
                    arr.pop();
                    arr.pop();
                    answer += 2;
                }
                break;
            }
        } 
    }
    return answer;
}

세로 열에 대해서 0이 아닌 숫자가 있을 때 그 수를 배열(스택)에 담아줘야 한다.

그래서 바깥 for문은 moves의 길이만큼 돌리고, 안에 for문은 board의 길이만큼 돌려서 

board[i][moves[j]-1]가 [0,0][1,0][2,0]...처럼 반복되도록 했다.

0이 아닌 숫자만 가져가야 해서 if 조건문을 달아줬고 바구니 배열로 가져간 숫자는 0으로 만들어줬다.

arr에 값이 담겨있을 때 배열의 마지막 값과 그 전의 값이 동일할 때에 두 값을 모두 pop으로 제거해주고 2개의 숫자가 사라졌기 때문에 +2를 해준다.

하나의 숫자에 대해서만 이러한 과정이 적용되기 때문에 break를 걸어준다