시도한 풀이
function solution(board, moves) {
let answer = 0;
let stack = [];
for (let i = 0; i < moves.length; i++) {
let doll = 0;
let idx = moves[i] - 1;
for (let j = 0; j < board.length; j++) {
if (board[j][idx] === 0) continue;
doll = board[j][idx];
if (stack.length === 0) stack.push(doll);
else {
let dollInStack = stack.pop();
if (doll === dollInStack) answer += 2;
else {
stack.push(dollInStack);
stack.push(doll);
}
}
board[j][idx] = 0;
break;
}
}
return answer;
}
[어려웠던 점]
처음에 배열 위치를 거꾸로 봤음.
다행히 문제 이해하고 나서는 금방 풀었는데
따로 행렬을 거꾸로 (가로, 세로) 바꾸진 않았고.
그냥 for 문이랑 if 문으로 해결했는데 뭔가 지저분한 느낌.
[새롭게 알게된 점]
책에서 코드를 봤는데 일단 board도 스택으로 관리하고
이거는 나도 깜빡한 건데 굳이 pop을 한 다음에 비교 안 해도 됨.
그냥 맨 뒤에 꺼 체크하면 되는 거다.
책에서는 2차원 배열 board를 진짜 인형뽑기처럼 변형해버림.