var a = ['프로그래머스', '크레인 인형뽑기 게임'];

❓ 문제

코딩테스트 연습 > 2019 카카오 개발자 겨울 인턴십 > 크레인 인형뽑기 게임

게임 화면의 격자의 상태가 담긴 2차원 배열 board와 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves가 매개변수로 주어질 때, 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요.

👨‍🔧 접근

  1. moves 배열의 요소들을 순서대로 읽는다.
  2. 요소에 해당하는 board 값을 stack에 쌓는다.
  3. 스택에 연속해서 쌓은 요소들을 제거 후 answer += 2;

💻 코드

const checkSuccesive = (array) => {
    if(array.length > 1 && array[0] === array[1]){
        array.splice(0,2);
        return 1;
    }
    return 0;
} // 요소가 연속적으로 존재하는지 안하는지 판단

function solution(board, moves) {
  let answer = 0;
  let stack = [];
  let repeat1 = moves.length; 
  let repeat2 = board.length; // 반복 횟수 지정

    for(let i=0;i<repeat1;i++) {
        let move = moves[0]-1;
        moves.shift()
        
        for(let j=0;j<repeat2;j++){  
          if(board[j][move]!=0){
                stack.unshift(board[j][move]);
                board[j][move] = 0;
                if(checkSuccesive(stack)){answer+=2;}
                break;
            }
        }
    }
    return answer;
}

👨‍🏫 리뷰

자바스크립트에서는 보다 간단하게 배열로 스택을 구현할 수 있었다. 배열 뒤에서부터 차곡차곡 쌓는 push와 pop을 쓸 수도 있고, 배열 앞쪽에서부터 쌓는 unshift와 shift를 사용할 수 있다.

좋은 웹페이지 즐겨찾기