- 문제 링크

https://programmers.co.kr/learn/courses/30/lessons/64061

 

코딩테스트 연습 - 크레인 인형뽑기 게임

[[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4

programmers.co.kr

난이도: Level 1

 

- 제출 답안

import Foundation

func solution(_ board:[[Int]], _ moves:[Int]) -> Int {
    var newBoard = board
    
    var basket = [Int]()
    var result = 0
    
    for move in moves {
        for (key, line) in newBoard.enumerated() {
            if line[move - 1] != 0 {
                basket.append(line[move - 1])
                newBoard[key][move - 1] = 0
                break
            }
        }
        
        if basket.count > 1, basket[basket.endIndex - 1] == basket[basket.endIndex - 2] {
            basket.removeLast()
            basket.removeLast()
            result += 2
        }
    }
    
    return result
}

 

- 풀이

먼저 보드에 있는 숫자를 바구니에 옮긴다. 보드에 있는 숫자를 바구니에 넣고 보드에 숫자가 있던 자리는 0으로 대체한다. 이때, 0이 아닌 숫자만 옮긴다.

그리고 바구니에 숫자가 1개만 있다면 인덱스 오류가 나기 때문에 2개 이상일때, 마지막 두개의 숫자만 비교하여 같다면 마지막 두개의 숫자를 지우고 지운 갯수인 result에 2씩 더해준다.

이 과정을 moves에 있는 요소만큼 반복한다.

+ Recent posts