function solution(board, moves) {
let answer = 0;
let arr = [];
let pick = '';
moves.forEach((e) => {
for (let i = 0; i < board.length; i++) {
if (board[i][e - 1] !== 0) {
pick += board[i][e - 1];
board[i][e - 1] = 0;
return;
}
}
});
let pickSplit = pick.split('');
for (let i = 0; i < pickSplit.length; i++) {
if (pickSplit[i] === pickSplit[i + 1]) {
arr.push(pickSplit.splice(i, 2));
i = 0;
}
}
return arr.length * 2;
}
function solution(board, moves) {
let answer = 0;
const length = board.length
let basket = []
moves.forEach(move => {
for (let i = 0; i < length; i++) {
const item = board[i][move - 1]
if (item !== 0) {
if (basket[basket.length - 1] !== item) {
basket.push(item)
} else {
basket.pop()
answer += 2
}
board[i][move - 1] = 0
break
}
}
})
return answer;
}
기본적으로 인형을 뽑는 것까지 접근 방식이 동일하지만 연속된 숫자를 찾는 부분에서 내가 논리적으로 오류를 가지고 있었다. 추가되는 인형에 대해서만 연속된 숫자를 검색하면서 처리하면 되는 거였다. 나는 기존에 인형이 쌓인다는 생각에 pick 문자열 전체에서 계속해서 반복문을 처리하는 실수를 했다.
function solution(board, moves) {
let answer = 0;
let arr = 0;
let pick = [];
moves.forEach((e) => {
for (let i = 0; i < board.length; i++) {
if (board[i][e - 1] !== 0) {
if (board[i][e - 1] === pick[pick.length - 1]) {
pick.pop();
arr += 2;
} else {
pick.push(board[i][e - 1]);
}
board[i][e - 1] = 0;
return;
}
}
});
return arr
}
접근하는 논리가 같았지만 결과가 달랐다는게 아쉽다. 최대한 간단하게 생각하는 것도 중요한 것 같다. 그것 또한 엄청난 실력이겠지만...