1. 자료 구조
board, moves: 배열
list : 뽑아온 인형을 담을 공간, 스택
2. 내가 문제 해결한 방식
1) moves-1에 해당하는 열에 해당하는 0~ N-1까지 행을 조회하며 0이 아닌 숫자를 찾는다
2) 0이 아니면 list 스택에서 인형을 꺼내와서 비교를 한다
3) 같으면 스택에서 인형을 빼고 +2를 해준다(스택에 있는 인형1개, 새로 들어올 인형1개 = 2개)
4) 다르면 스택에 그냥 집어 넣는다
5) 2번 경우에 들어오면 무조건 break로 해서 행 조회를 중지한다.(인형은 반드시 표면에 있는 1개의 인형만 뽑을 수 있기 때문)
3. 내가 제출한 방식
function solution(board, moves) {
let list = [];
let answer=0;
let m = 0;
let column =0;
for(let m = 0 ; m < moves.length ; m++){
column = moves[m]-1;
for(let i = 0 ; i < board.length ; i++){
if(board[i][column] !== 0 ){
if(board[i][column]==list[list.length - 1]){
answer = answer+2;
list.pop();
}
else list.push(board[i][column]);
board[i][column] = 0;
break;
}
}
}
return answer;
}