적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/Programmers

[Swift 알고리즘] Programmers 크레인 인형뽑기 게임

hongssup_ 2022. 2. 21. 18:12
반응형

Level 1 

크레인 인형뽑기 게임

문제 설명
게임 화면의 격자의 상태가 담긴 2차원 배열 board와 인형을 집기 위해 크레인을 작동시킨 위치가 담긴 배열 moves가 매개변수로 주어질 때, 크레인을 모두 작동시킨 후 터트려져 사라진 인형의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- board 배열은 2차원 배열로 크기는 "5 x 5" 이상 "30 x 30" 이하입니다.
- board의 각 칸에는 0 이상 100 이하인 정수가 담겨있습니다. (0은 빈 칸, 1 ~ 100의 각 숫자는 각기 다른 인형의 모양을 의미)
- moves 배열의 크기는 1 이상 1,000 이하입니다.
- moves 배열 각 원소들의 값은 1 이상이며 board 배열의 가로 크기 이하인 자연수입니다.

 

입출력 예시

print(solution([[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

 

내 답안

import Foundation

func solution(_ board:[[Int]], _ moves:[Int]) -> Int {
    var board = board    //인형뽑기격자
    var stack = [Int]()  //바구니
    var result = 0

    for i in moves {
        for j in 0..<board.count {
            if board[j][i-1] != 0 {
                //인형 뽑으면 빈칸처리
                board[j][i-1] = 0
            	//바구니에 담기
                stack.append(board[j][i-1])
                //같은 모양 인형이 바구니에 겹쳐 쌓이면 제거
                if stack.count > 1 {
                    if stack[stack.count-1] == stack[stack.count-2] {
                        stack.removeLast(2)
                        result += 2
                    }
                }
                break
            }
        }
    }
    return result
}

 

별건 아니고 큰 차이 없지만 stack[stack.count-1] 과 stack.last 사용하면 .last 보다 인덱스를 활용하는게 미세하게 더 빠른 것 같기도..? 

728x90
반응형