[프로그래머스] 크레인 인형뽑기 - Swift

이창형·2023년 5월 11일
0

카카오 문제는 길어요..
https://school.programmers.co.kr/learn/courses/30/lessons/64061#

코드

import Foundation

func solution(_ board:[[Int]], _ moves:[Int]) -> Int {
    var basket = [Int]()
    var board = board
    // 이 코드의 핵심
    // 전의 인형이 무엇인지 확인
    var last = 0
    // 인형을 몇개 가져왔는지 체크
    var count = 0
    
    for i in moves {
        for j in 0..<board.count {
            if board[j][i-1] != 0 {
                if board[j][i-1] == last {
                    basket.removeLast()
                    // basket이 비는 경우를 꼭!! 생각해야함
                    if basket.count == 0 {
                        last = 0
                    } else {
                        last = basket[basket.count-1]
                    }
                    board[j][i-1] = 0
                    count += 1
                    break
                } else {
                    basket.append(board[j][i-1])
                    last = board[j][i-1]
                    board[j][i-1] = 0
                    count += 1
                    break
                }
            }
            }
        }
    
    return count - basket.count
    }

회고

  • 코드가 더럽긴 하지만 풀려서 다행이다
  • 처음에 뽑는 것 마다 다 짝이 맞는 경우를 생각하지 못했다
  • last라는 변수를 두고 같은지 확인해서 지워나가려 했다
  • count를 사용하여 인형 몇개를 가져왔는지 체크
profile
iOS Developer

0개의 댓글