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]
] 이라면
=>
[
[ 0, 0, 0, 4, 3 ],
[ 0, 0, 2, 2, 5 ],
[ 0, 1, 5, 4, 1 ],
[ 0, 0, 0, 4, 3 ],
[ 0, 3, 1, 2, 1 ]
]
만든 후 각 array에서 0 제거
=>
stack =
[
[ 4, 3 ],
[ 2, 2, 5 ],
[ 1, 5, 4, 1 ],
[ 4, 3 ],
[ 3, 1, 2, 1 ]
]
뽑으려는 을 stack[moves[index] -1]의 0번째 index가 있다면 result에 push 후 쌓인 result의 마지막 index, 마지막 index - 1이 같다면 둘 제거 후 answer에 +2
function solution(board, moves) {
let answer = 0;
let stack = [];
let result = [];
let size = board.length;
let count = 0;
while (count !== size) {
let arr = [];
board.forEach((doll) => {
if (doll[count] !== 0) {
arr.push(doll[count]);
}
});
stack.push(arr);
count++;
}
for (let i = 0; i < moves.length; i++) {
if (stack[moves[i] - 1][0]) {
// 뽑으려는
result.push(stack[moves[i] - 1][0]);
stack[moves[i] - 1].shift();
if (result[result.length - 1] === result[result.length - 2]) {
answer += 2;
result.splice(result.length - 2, 2);
}
}
}
return answer;
}