[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기(JavaScript)

heumheum2·2020년 5월 1일
0

코딩테스트

목록 보기
1/5
post-thumbnail

📚 문제

[입출력 예]

boardmovesresult
[[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]][1,5,3,5,1,2,1,4]4

위의 예시에서 board는 5x5인 2차원 배열이며, 숫자들은 인형입니다.
moves로 사진에서 보이는 번호에 맨 위의 인형을 뽑아 오른쪽 바구니에 넣습니다. 바구니 안에 쌓일 때 같은 인형끼리 겹치면 사라지며 result값을 증가시켜 반환시키는 문제입니다.

📖 풀이

function solution(board, moves) {
    const basket = [];
    let result = 0;
    moves.forEach(v => {
        const doll = pickup(board, v-1);
        if(doll){
            if(basket[basket.length-1] === doll){
                basket.pop();
                result +=2;
            }else{
                basket.push(doll);
            }
        }
    });
    return result;
}

function pickup(board, index){
    const newBoard = board;
    for(let i = 0; i < newBoard.length ; i++){
        if(newBoard[i][index] !== 0){
            const doll = newBoard[i][index];
            newBoard[i][index]= 0;
            return doll;
        }
    }
}

pickup 함수는 크레인으로 인형을 뽑아 반환하는 함수입니다.
반환 된 인형은 바구니에 들어있는 마지막 인형과 뽑은 인형이 같은지 비교 후에 같다면 pop()으로 바구니에서 꺼내고 result에 인형 2개를 더합니다. 다르다면 push()로 바구니에 인형을 넣는 방법입니다.

📃 링크

2019 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임


profile
커피가 본체인 개발자 ☕️

0개의 댓글