cnt: 터진 인형 카운트
basket: 바구니에 쌓이는 인형 리스트
boardArr: 각 열에 쌓인 인형 리스트
moves 순회를 돌며, 인형이 있을 경우, 같은 인형이 연속하지 않으면 바구니에 추가, 연속하면 바구니 맨 위의 인형을 제거하고, 터진 인형 2개를 카운트
function solution(board, moves) {
const basket = []
let cnt = 0
const boardArr = Array.from({length:board.length}, () => [])
board.forEach(arr => {
arr.forEach((v, i) => {
if (v !== 0) boardArr[i].push(v)
})
})
moves.forEach(v => {
if (boardArr[v-1].length) {
const shift = boardArr[v-1].shift()
if (basket[basket.length-1] === shift) {
basket.pop()
cnt += 2
} else {
basket.push(shift)
}
}
})
return cnt;
}
const arr = Array(2).fill([]) // [[], []]
arr[0][0] = 1 // [[1], [1]]
arr[0] 값과 arr[1] 값의 주소가 같은가 보다.
처음에 설명을 잘못 이해하여 헤멨다. board의 각 값(배열)이 한 열인 줄 알았는데, 한 줄로 쌓이는 거였다. 이는 '입출력 예'의 입력과 그림과 비교하며 체크했으면 알 수 있는 사실이었으나, 그러지 않았기에 놓친 내용이었다. 시간을 절약하고, 실수를 줄이기 위해 먼저 문제를 정확히 이해해야 한다.