풀이
/**
* 크레인인형뽑기게임.js
* https://programmers.co.kr/learn/courses/30/lessons/64061?language=javascript
*/
function solution(board, moves) {
const stk = [];
let answer = 0;
moves.forEach((col) => {
for (let i = 0; i < board.length; i++) {
const item = board[i][col - 1];
if (item > 0) {
board[i][col - 1] = 0;
if (stk.length > 0 && stk[stk.length - 1] === item) {
stk.pop();
answer += 2; // 인형 2개가 만나서 사라지므로 한 번에 2씩 커져야한다.
} else {
stk.push(item);
}
break;
}
}
});
return answer;
}
문제 설명에서부터 Stack 을 사용해야함을 보여주는 문제다.
moves를 기준으로 2차원 배열을 순회하며 숫자로 형상화된 인형이 있을 경우 스택에 집어넣고, 스택의 peek 값이 넣어주는 값과 동일한 경우 두 인형 모두 없애준다. 주의할 점은 한 번에 사라지는 인형이 2개라는 점이다 (원래 있던 인형 하나, 새로 넣어준 인형 하나). peek 값과 넣어주는 값이 다를 경우 스택에 그냥 추가만 해준다. 이를 반복해서 나온 answer를 반환하면 끝이다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][자바스크립트][Level1][카카오] 신규 아이디 추천 (0) | 2022.02.19 |
---|---|
[프로그래머스][자바스크립트][Level1][카카오] 키패드 누르기 (0) | 2022.02.19 |
[프로그래머스][자바스크립트][Level2][카카오] 방금그곡 (0) | 2022.02.16 |
[프로그래머스][자바스크립트][Level2][카카오] 메뉴 리뉴얼 (0) | 2022.02.14 |
[프로그래머스][자바스크립트][Level1][카카오] 비밀 지도 (0) | 2022.02.13 |
댓글