공대생의 비망록

[프로그래머스][Lv. 1] 다트 게임 Swift 풀이 본문

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
Comments