본문 바로가기
알고리즘/프로그래머스

[프로그래머스][자바스크립트][Level1][카카오] 크레인 인형뽑기 게임

by Benjamin_Choi 2022. 2. 19.

풀이

 

/**
 * 크레인인형뽑기게임.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를 반환하면 끝이다. 

 

댓글