-
[프로그래머스][Swift] 다트 게임알고리즘 2022. 7. 14. 14:33728x90
func solution(_ dartResult:String) -> Int { let arr = dartResult.map { $0 } var arr2: [Int] = [] var result: Int = 0 for i in 0..<arr.count { if arr[i].isNumber == true { continue } else if arr[i] == "S" || arr[i] == "D" || arr[i] == "T" { if arr[i] == "S" { if i > 1 { if arr[i - 2].isNumber == true { result += 10 } } result += Int(String(arr[i - 1]))! } else if arr[i] == "D" { if i > 1 { if arr[i - 2].isNumber == true { result += 10 * 10 } } result += Int(String(arr[i - 1]))! * Int(String(arr[i - 1]))! } else { if i > 1 { if arr[i - 2].isNumber == true { result += 10 * 10 * 10 } } result += Int(String(arr[i - 1]))! * Int(String(arr[i - 1]))! * Int(String(arr[i - 1]))! } arr2.append(result) } else { if arr[i] == "*" { if arr2.count == 1 { result = arr2[0] * 2 arr2.removeLast() arr2.append(result) } else if arr2.count == 2 { result = arr2[1] * 2 arr2.removeLast() arr2.append(result) result = 0 result = arr2[0] * 2 arr2.removeFirst() arr2.insert(result, at: 0) } else { result = arr2[2] * 2 arr2.removeLast() arr2.append(result) result = 0 result = arr2[1] * 2 arr2.remove(at: 1) arr2.insert(result, at: 1) } } else { result = arr2[arr2.index(before: arr2.endIndex)] * (-1) arr2.removeLast() arr2.append(result) } } result = 0 } return arr2.reduce(0) { $0 + $1 } }
다른 사람의 풀이
func solution2(_ 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 }
어렵다...
'알고리즘' 카테고리의 다른 글
[프로그래머스][Swift] 숫자 문자열과 영단어 (0) 2022.08.04 [프로그래머스][Swift] 문자열 내 p와 y의 개수 (0) 2022.07.14 [프로그래머스][Swift] 두 정수 사이의 합 (0) 2022.07.11 [프로그래머스][Swift] 부족한 금액 계산하기 (0) 2022.07.01 [프로그래머스][Swift] 문자열 다루기 기본 (0) 2022.06.29