티스토리 뷰
나의 풀이
import Foundation
func solution(_ dartResult:String) -> Int {
var point = [0, 0, 0]
var square = [1, 1, 1]
var opt = [1, 1, 1]
var temp: Character = " "
var index: Int = 0
var result: Int = 0
for c in dartResult {
switch c{
case "0"..."9":
if temp == "1", c == "0" {
point[index-1] = 10
} else {
point[index] = Int(String(c)) ?? 0
index += 1
}
case "D":
square[index-1] = 2
case "T":
square[index-1] = 3
case "*":
opt[index-1] = 2
case "#":
opt[index-1] = -1
default:
break
}
temp = c
}
for i in 0..<3 {
let gamePoint: Int = (Int(pow(Decimal(point[i]), square[i]).description) ?? 0) * opt[i]
result += gamePoint
if i < 2 && opt[i+1] == 2 {
result += gamePoint
}
}
return result
}
다른 사람의 풀이
func solution(_ dartResult:String) -> Int {
let numberList = dartResult.split(whereSeparator: {$0.isLetter || $0 == "#" || $0 == "*"})
let letterList = dartResult.split(whereSeparator: {$0.isNumber})
var totalScore = 0
for (i, (number, letter)) in zip(numberList, letterList).enumerated() {
var score = 0
if let number = Int(number) {
score = letter.contains("D") ? number * number : letter.contains("T") ? number * number * number : number
}
if letter.contains("*") {
score *= 2
} else if letter.contains("#") {
score = -score
}
if i != 2 {
if letterList[i + 1].contains("*") {
score *= 2
}
}
totalScore += score
}
return totalScore
}
'Algorithm' 카테고리의 다른 글
[Swift 알고리즘] 프로그래머스 Lv1 나누어 떨어지는 숫자 배열 (0) | 2021.04.28 |
---|---|
[Swift 알고리즘] 프로그래머스 Lv1 실패율 (0) | 2021.04.27 |
[Swift 알고리즘] 프로그래머스 Lv1 비밀지도 (0) | 2021.04.27 |
[Swift 알고리즘] 프로그래머스 Lv1 키패드 누르기 (0) | 2021.04.27 |
[Swift 알고리즘] 프로그래머스 Lv1 로또의 최고 순위와 최저 순위 (0) | 2021.04.27 |
댓글
공지사항