Programming Language/Swift
[프로그래머스][Lv. 1] 다트 게임 Swift 풀이
myungsup1250
2022. 4. 7. 23:08
https://programmers.co.kr/learn/courses/30/lessons/17682
코딩테스트 연습 - [1차] 다트 게임
programmers.co.kr
풀이는 추후에 차차 올리도록 하겠습니다...
2018 KAKAO BLIND RECRUITMENT 1차 코딩테스트에 나온 문제.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
func calculatePointsFrom(_ index: Int, _ record: inout String) -> Int {
var num: Int = 0
for ch in record {
if ch.isNumber {
if num > 0 {
num *= 10
}
num += Int(String(ch))!
} else if ch.isLetter && ch.isUppercase {
if ch == "S" {
continue
} else if ch == "D" {
num = num * num//pow(num, 2)
} else if ch == "T" {
num = num * num * num//pow(num, 3)
} else {
return 0 // ERROR
}
} else if ch == "*" {
if index > 0 {
points[index - 1] *= 2
}
num *= 2
} else if ch == "#" {
num *= -1
}
}
print("num: \(num)")
return num
}
var points: [Int] = [Int]()
func solution(_ dartResult:String) -> Int {
var record: String = ""
for i in 0..<dartResult.count {
let ch: Character = dartResult[dartResult.index(dartResult.startIndex, offsetBy: i)]
if ch.isNumber {
if !record.isEmpty && !record.last!.isNumber {
points.append(calculatePointsFrom(points.count, &record))// 점수 계산
record.removeAll()
}
}
record += "\(ch)"
}
if !record.isEmpty {
points.append(calculatePointsFrom(points.count, &record))// 점수 계산
}
return points.reduce(0, +)
}
|
cs |