# [Algorithm/JS] 프로그래머스 64061 크레인 인형뽑기

🔗 문제 바로가기 (opens new window)

# Solution

function solution(board, moves) {
  const stack = [];
  let answer = 0;

  moves.forEach((order) => {
    const target = pick(board, order - 1);
    if (target) {
      if (stack[stack.length - 1] === target) {
        stack.pop();
        answer += 2;
      } else {
        stack.push(target);
      }
    }
  });
  return answer;
}

function pick(board, order) {
  for (let i = 0; i < board.length; i++) {
    if (board[i][order] !== 0) {
      target = board[i][order];
      board[i][order] = 0;
      return target;
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

인형을 뽑는 기능을 함수로 분리했다.

stack 변수는 뽑은 인형을 담는 바구니 역할을 한다. stack 의 가장 마지막으로 들어온 인형과 뽑은 인형이 같다면 제거(pop) 하고, 두개의 인형이 함께 제거되었기 때문에 제거 횟수는 2번씩 카운트한다.

Last Updated: 2022. 6. 5. 오후 3:42:39