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

Minsuk Jang·2021년 9월 8일
0

프로그래머스

목록 보기
45/48
post-thumbnail

문제 링크

🤔 풀이 방법

구현 유형의 문제이므로 본인이 편한 방법으로 문제를 해결하면 된다.
필자는 아래와 같은 알고리즘을 구현하였다.

1. moves의 원소값을 가지고 해당 열을 선택한 뒤, 크레인을 내린다.
2. 크레인을 내리면서 0이 아닌 인형이 있는 지 파악하여 인형을 선택한다.
3. Stack에 인형을 넣을 때, 조건에 맞춰서 인형을 터트릴지 말지 선택한다.

👉 소스 코드

import java.util.*
class Solution {
    fun solution(board: Array<IntArray>, moves: IntArray): Int {
        val stack = Stack<Int>()
        var ret = 0
        
        moves.forEach { 
            val dollNum = moveDown(it-1, board)
            
            if(stack.isNotEmpty() && dollNum != 0 && stack.peek() == dollNum){
                stack.pop()
                ret += 2
            }else{
                stack.push(dollNum)
            }
        }
        
        return ret
    }
    
    private fun moveDown(y : Int, board : Array<IntArray>) : Int{
        for(it in board){
            if(it[y] != 0){ //인형이 존재하는 경우
                val ret = it[y]
                it[y] = 0
                return ret
            }
        }
        return 0
    }
}
profile
Positive Thinking

0개의 댓글