본문 바로가기
알고리즘

[Swift] 프로그래머스 - 카카오 다트 게임

by 고고 2022. 2. 28.

문제: https://programmers.co.kr/learn/courses/30/lessons/17682

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

 

 

문제에서 요구하는대로 구현했습니다.

import Foundation

func solution(_ dartResult:String) -> Int {
    var answer = [Int]()
    var temp = ""
    
    for dart in dartResult {
        if Int(String(dart)) != nil {
            temp.append(dart)
        } else if "SDT".contains(dart) {
            let num = Int(temp)!
            temp = ""
            
            if dart == "S" {
                answer.append(num)
            } else if dart == "D" {
                answer.append(num * num)
            } else if dart == "T" {
                answer.append(num * num * num)
            }
        } else if "*#".contains(dart) {
            let first = answer.removeLast()
            
            if dart == "*" {
                if !answer.isEmpty {
                    var second = answer.removeLast()
                    answer.append(second * 2)
                }
                answer.append(first * 2)
            } else if dart == "#" {
                answer.append(first * -1)
            }
        }
    }
    
    return answer.reduce(0, +)
}

댓글