풀이 과정
- moves 배열에 대해 반복하면서 값 누적:
reduce()
- move에 해당하는 수 찾기: y가
move - 1
인 board의 요소 중 x가 가장 작은 수
- 2에서 찾은 자리를 0으로 바꿈(꺼내기)
- 꺼낸 수를 바구니 배열의 마지막 요소와 비교:
at()
같으면 바구니 배열의 마지막 요소 꺼내고 결과 +2: pop()
다르면 바구니에 넣기: push()
코드
function solution(board, moves) {
const basket = [];
return moves.reduce((result, move) => {
let doll;
for (let i = 0; i < board.length; ++i) {
if (board[i][move - 1] !== 0) {
doll = board[i][move - 1];
board[i][move - 1] = 0;
break;
}
}
if (!doll) return result;
if (doll === basket.at(-1)) {
basket.pop();
return result + 2;
}
basket.push(doll);
return result;
}, 0);
}
잘봤습니다. 좋은 글 감사합니다.