[입출력 예]
board | moves | result |
---|---|---|
[[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 카카오 개발자 겨울 인턴십 - 크레인 인형뽑기 게임