알고리즘 발자취/코딩테스트 자바스크립트 버전

[Lv1 코딩테스트 연습] 크레인 인형뽑기 게임

까연 2021. 7. 14. 23:29

https://programmers.co.kr/learn/courses/30/lessons/64061

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

 

나의 풀이

function solution(board, moves) {
    let answer = 0
    let basket = []

    for(let i=0; i<moves.length; i++) {
        let move = moves[i] - 1
        let j=0
        
        while(j < board[0].length && board[j][move] === 0 ) {
            j++
        }
        
        if(j < board[0].length) {
            if(basket.length) {
                let latestItem = basket.pop()
                if(latestItem === board[j][move]) {
                    answer += 2
                } else {
                    basket.push(latestItem)
                    basket.push(board[j][move])
                }
            } else {
                basket.push(board[j][move])
            } 
            board[j][move] = 0
        }
    }
    
    return answer
}


변수

  • board: 인형뽑기 판 (N*N 2차원 배열)
  • moves: 크레인이 이동한 위치 배열
  • answer: 사라진 인형의 개수
  • basket: 뽑은 인형을 담을 바구니 (스택)

 

설명

: 인형뽑기 기계는 2차원 배열이고 작동시킨 위치 move의 값이 기계의 열 값이다.

인형을 담는 바구니는 먼저 쌓인 인형이 아래로 가는 스택 구조로 된 바구니이다. 가장 마지막에 쌓인 인형과 현재 인형을 비교하여 같을 경우 인형을 제거하도록 하였다.

바구니에 인형을 담을 땐 push() 함수를 사용하고, 가장 마지막의 인형을 꺼낼 땐 pop() 함수를 사용했다.