# [Algorithm/JS] 프로그래머스 64061 크레인 인형뽑기
# 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
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번씩 카운트한다.