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, +)
}