[Swift 알고리즘] [1차] 다트 게임

장주명·2021년 5월 12일
0

Lv1이지만 엄청 어려웠다.... 문제 자체가 어렵다기보다

타입, 옵셔널 등을 고려하며 작성해주지 않으니 에러가 많이나 수정작업을 많이 해야 했다.

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

import Foundation

func solution(_ dartResult:String) -> Int {
    
    func makeCommand(_ request : String) -> [String] {
        
        var command = [String]()
        var word = ""
        
        for i in request {
            if Int(String(i)) == nil {
                if i == "#" || i == "*" {
                    command.append(String(i))
                } else {
                    word += String(i)
                    command.append(word)
                    word = ""
                }
                
            } else {
                word += String(i)
            }
        }
        
        return command
    }
    
    let Array = makeCommand(dartResult)
    
    var scoreArray = [Int]()
    
    for i in 0..<Array.count {
        var number = ""
        for j in Array[i] {
            if Int(String(j)) == nil {
                switch j {
                case "S":
                    scoreArray.append(Int(number)!)
                case "D":
                    scoreArray.append(Int(number)! * Int(number)!)
                case "T":
                    scoreArray.append(Int(number)! * Int(number)! * Int(number)!)
                case "#":
                    scoreArray[scoreArray.count - 1] = -scoreArray[scoreArray.count - 1]
                case "*":
                    scoreArray[scoreArray.count - 1] = scoreArray[scoreArray.count - 1] * 2
                    if scoreArray.count > 1 {
                        scoreArray[scoreArray.count - 2] = scoreArray[scoreArray.count - 2] * 2
                    }
                default:
                    break
                }
                number = ""
            } else {
                number += String(j)
            }
        }
        
    }
    
    
    return scoreArray.reduce(0, +)
    
}
profile
flutter & ios 개발자

0개의 댓글

관련 채용 정보