[알고리즘] 크레인 인형뽑기 게임

soyoung·2023년 1월 15일
0

알고리즘

목록 보기
1/1

board = [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]];
moves = [1,5,3,5,1,2,1,4];

크레인을 작동시킨 위치는 moves
board 안 이차원 배열의 0이 아닌 숫자를 moves 순서대로 꺼내야 한다.
이후, basket 안에 쌓는다.
동일한 숫자가 연속해서 basket안에 두개 들어가면 두 숫자는 터진다
터트려져 사라진 인형의 개수를 리턴

function solution(board, moves) {
    let basket = [];
    let result = 0;
    let boardCopy = board.map(v => [...v]);   
    
    for (let i = 0; i < moves.length; i++) {
        let move = moves[i] - 1;//크레인을 움직인다.
        
        for (let j = 0; j < boardCopy.length; j++) {
            let doll = boardCopy[j][move];//크레인이 잡을 인형

            if (doll) {//인형이 있으면
                boardCopy[j][move] = 0;//board에 인형을 꺼내준다.
                let basketDoll = basket[basket.length - 1];
                
                 if (basket.length !== 0 && basketDoll === doll) {
                    result+=2;
                    basket.pop();
                } else {
                //basket안에 아무것도 없거나 basket 내에 일치한 돌이 없을 경우 바스켓에 인형을 넣어준다.
                    basket.push(doll);
                }
                //인형을 꺼내서 넣어주었으니, 다시 크레인을 움직인다.
                break;
            }
        } 
    }
    
    return result;
}
profile
조금씩 나아지는 중

0개의 댓글