728x90


📌  풀이

스택을 이용해서 풀었다. 스택이란 책 쌓기를 생각하면 된다. 가장 먼저 들어온 것이 가장 아래 쌓이고 가장 늦게 들어온 것이 가장 위에 쌓여 pop 즉 빼낼 때 가장 먼저 나가게 되는 Last In First Out(LIFO) 형태이다.

2차원 배열에서 하나씩 내려가면서 나오는 인형과 stack에 있는 인형을 비교해 만약 같다면 즉 (stack.peek() == board[i][it - 1])이라면 answer를 2개 늘려주고 stack의 인형을 pop 시켜주고 배열에서의 인형도 0 즉 인형을 없애준다.

 

 

 

 

풀이 코드

import java.util.*

class Solution {
    fun solution(board: Array<IntArray>, moves: IntArray): Int {
        var answer = 0
        var stack = Stack<Int>()

        moves.forEach {
            for (i in board.indices){
                if (board[i][it - 1] != 0){
                    if (stack.isNotEmpty() && (stack.peek() == board[i][it - 1])){
                        answer += 2
                        stack.pop()
                    } else {
                        stack.push(board[i][it - 1])
                    }
                    board[i][it - 1] = 0
                    break
                }
            }
        }
        return answer
    }
}

 

 

 

 

 

 

 

 

 

 

 

복사했습니다!