프로그래머스 문제입니다.
https://programmers.co.kr/learn/courses/30/lessons/64061
일이 진행되는순서를 명확히 파악해야 풀수있는 문제같습니다.
크레인의 움직임을 따라가면서 인형이 있으면 뽑고 해당자리를 0으로 만들고, 인형이 없으면 지나치게 잘 구현해야할 거 같습니다.
func solution(_ board:[[Int]], _ moves:[Int]) -> Int {
var copiedBoard = board
var bucket: [Int] = []
var beforeDoll = 0
var result = 0
for move in moves {
for i in 0..<copiedBoard.count {
if copiedBoard[i][move-1] == 0 {
} else {
bucket.append(copiedBoard[i][move-1])
copiedBoard[i][move-1] = 0
//현재 for문 벗어난다.
break
}
}
// 바구니에 있는 인형이 2개이상이면서, 바구니의 맨위값(last) 두개가 같은지 확인해서
// 같으면 removeLast두번하고 result+2해준다.
if bucket.count > 1 {
if bucket[bucket.endIndex-1] == bucket[bucket.endIndex-2] {
bucket.removeLast()
bucket.removeLast()
result+=2
}
}
}
return result
}
배열: developer.apple.com/documentation/swift/array