뽑은 인형을 stack 최상단 요소와 비교하여,
ㄴ 같으면 stack 최상단 요소를 없애고 cnt + 2
ㄴ 다르면 stack에 뽑은 인형 추가
그래프에서 뽑은 인형을 반영 (⭐ 이 때, 각 열에 뽑을 인형이 없는 경우 예외처리가 잘 되어있는지 확인)
function solution(board, moves) {
let cnt = 0;
let stack = [];
for (let i = 0; i < moves.length; i++) {
let now = moves[i] - 1;
for (let j = 0; j < board.length; j++) {
// 맨 위의 요소 뽑기
if (board[j][now] != 0) {
// stack top과 동일하면 삭제하고 cnt + 2
if (stack[stack.length - 1] === board[j][now]) {
stack.pop();
cnt += 2;
} else {
stack.push(board[j][now]);
}
// 맨 위 요소 뽑음 처리
board[j][now] = 0;
break;
}
}
}
⭐ 성찰
❓ 문제 상황
크레인 인형뽑기
👨💻 문제 해결
✅ 1차 풀이: 키워드
function solution(board, moves) { let cnt = 0; let stack = [];
for (let i = 0; i < moves.length; i++) { let now = moves[i] - 1; for (let j = 0; j < board.length; j++) { // 맨 위의 요소 뽑기 if (board[j][now] != 0) { // stack top과 동일하면 삭제하고 cnt + 2 if (stack[stack.length - 1] === board[j][now]) { stack.pop(); cnt += 2; } else { stack.push(board[j][now]); } // 맨 위 요소 뽑음 처리 board[j][now] = 0; break; } } }
return cnt; }