스택을 통해 현재 들어오는 인형의 종류와 가장 윗단에 존재하는 인형을 비교할 수 있다.
import Foundation
func solution(_ board:[[Int]], _ moves:[Int]) -> Int {
var board = board
var total = 0
var stack = [Int]()
func getDoll(_ position: Int) -> Int? {
let position = position - 1
for idx in 0..<board.count {
if board[idx][position] != 0 {
let doll = board[idx][position]
board[idx][position] = 0
return doll
}
}
return nil
}
for move in moves {
guard let doll = getDoll(move) else { continue }
if !stack.isEmpty {
if stack.last! == doll {
stack.removeLast()
total += 2
} else {
stack.append(doll)
}
} else {
stack.append(doll)
}
}
return total
}