ericagong / algorithm_solving

2 stars 0 forks source link

[스택] 크레인 인형뽑기 #65

Closed ericagong closed 1 year ago

ericagong commented 1 year ago

⭐ 성찰

  1. 그래프에서 행이 아니라 열별로 접근할 때는, 바깥쪽 for문에서 열을 먼저 고정해주면 됨.
  2. 자바스크립트에서 스택은 단순 배열로 구현 가능. stack top = 배열 마지막 요소
  3. 예외처리 해야할 부분이 있다면, 풀이 과정에 적어두고 디버깅 시 최우선으로 확인하기.

❓ 문제 상황

크레인 인형뽑기

👨‍💻 문제 해결

✅ 1차 풀이: 키워드

  1. 주어진 크레인의 움직임을 순회하며, 각 열의 최상위 인형 요소를 뽑음
  2. 뽑은 인형을 stack 최상단 요소와 비교하여, ㄴ 같으면 stack 최상단 요소를 없애고 cnt + 2 ㄴ 다르면 stack에 뽑은 인형 추가
  3. 그래프에서 뽑은 인형을 반영 (⭐ 이 때, 각 열에 뽑을 인형이 없는 경우 예외처리가 잘 되어있는지 확인)

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; }

ericagong commented 1 year ago

👍 reviewed!