function solution(board, moves) {
let count = 0;
const basket = [];
moves.forEach((move) => {
const itemIdx = move - 1;
for (let i = 0; i < board.length; i++) {
if (!board[i][itemIdx]) continue;
if (basket.length && basket[basket.length-1] === board[i][itemIdx]) {
board[i][itemIdx] = 0;
count += 2;
basket.pop();
break;
} else {
basket.push(board[i][itemIdx]);
board[i][itemIdx] = 0;
break;
};
};
});
return count;
}
- board 배열에서 move에 해당하는 아이템을 순회하며 값을 찾습니다.
- 해당 아이템이 0일 경우는 아무 일도 일어나지 않기 때문에 continue를 합니다.
- basket 배열의 마지막 아이템과 해당 아이템이 같다면 basket에서 사라지면서 count를 +2 해줍니다.
- 같지 않다면 basket 배열에 해당 아이템을 넣어줍니다.
- board 배열에서 뽑힌 아이템은 0으로 초기화를 하여 뽑힌 것으로 처리 해줍니다.
- filter 메소드를 활용하여 0인 아이템을 제거한 배열을 만들고, 해당 배열을 순회했으면 더 효율적이였을 것 같습니다..!