Programmers.크레인 인형뽑기 게임

junseole·2021년 9월 5일
0
post-thumbnail

문제 설명

board와 moves 의 인자가 들어온다.

board 는 0이면 비어있는 칸 숫자면 인형이 들어있는 판이다.

moves는 board를 가로로 몇칸 움직일지 정하는 인자이다.

board의 행을 i 열을 j 로 가정한다면

moves는 가로로 움직이기 때문에 j 값에 영향을 받는다

그러므로 moves에 해당하는 열에 가서 i 값의 카운트를 늘려주면서 0이 아닌수가 나올때까지 검사를 한다.

0이 아닌 수를 arr에 값이 아무것도 없다면 그냥 넣는다.

arr에 값이 있다면 arr의 마지막 원소와 현재 값과 비교를 하여 같다면 추가를 하지않고 arr 원소를 지우고 answer 를 +1 추가한다.

인형은 1개가 삭제된것이 아닌 1쌍 2개가 삭제된것이기때문에 마지막에 answer * 2를 해서 리턴 해주면 된다.

문제 풀이

import Foundation

func solution(_ board:[[Int]], _ moves:[Int]) -> Int {
    var board = board
    var answer:Int = 0
    var arr:[Int] = []

    for i in moves{
        for j in 0..<board.count{
            let target:Int = board[j][i-1]
            if target != 0{
                board[j][i-1] = 0
                if target == arr.last{
                    arr.removeLast()
                    answer += 1
                }else{
                    arr.append(target)
                }
                break
            }
        }
    }
    return answer * 2
}

문제 바로가기

profile
Swift와 함께 여행중입니다.

0개의 댓글