본문 바로가기

코딩 테스트/Lv.1

[프로그래머스] 크레인 인형뽑기 게임

문제

인형뽑기를 하여 뽑은 인형을 1자형 바구니에 담을 때 같은 인형이 연속으로 있으면 터지며, 몇 개의 인형이 터졌는지 반환하는 문제

 

풀이 과정

  • 2차원 배열로 주어진 인형뽑기 기계의 인형들( board[x][y] )에서 y축이 크레인의 위치, x축이 크레인이 인형을 뽑으러 내려가는 길
  • 뽑은 인형 자리는 0으로 바꿔주고 뽑은 인형은 스택에 담아 준다.
  • 만약 스택에 연속으로 같은 숫자가 있다면 answer+=2 이후 펑

 

코드

import java.util.*
class Solution {
    fun solution(board: Array<IntArray>, moves: IntArray): Int {
        var answer = 0     
        //Stack
        val bucket = Stack<Int>()
        
        for(y in moves){
            for(x in board.indices){
                if(board[x][y-1] != 0){
                    //같은 숫자가 연속으로 있다면
                    if(bucket.isNotEmpty() && bucket[bucket.size-1] == board[x][y-1]){
                        bucket.pop()
                        answer += 2
                    }
                    else {
                        bucket.push(board[x][y-1])
                    }
                    board[x][y-1] = 0
                    break
                }
            }
        }
        
        return answer
    }
}