Algorithm
프로그래머스 - 다트 게임[Swift]
최강훈
2021. 7. 1. 10:59
드디어 나도 split을 써보는구나 ㅠㅠㅠㅠ
c++에서 swift로 언어를 갈아타고 있는데, STL에 익숙지 않아 여러 가지를 검색해가면서 코테 문제를 풀고 있다.
오늘 배운건 .split(whereSeparator: {}) 이다.
C++ 스플릿처럼 기준이 되는 문자를 제외한 요소를 배열로 만들어 리턴한다.
그리고 .enumuerated() 는 index와 element로 요소 하나하나에 접근할 수 있게 해주는 매지컬한 메서드이다.
아무튼.. 이를 이용해 아래와 같이 풀어봤으니 한번 돌려보자.
print 하는 부분을 따라가다 보면 이해가 될 것이다 :)
func solution(_ dartResult:String) -> Int {
var numbers = dartResult.split(whereSeparator: { $0.isLetter || $0 == "*" || $0 == "#"})
var letters = dartResult.split(whereSeparator: { $0.isNumber })
print (numbers)
print (letters)
var answer = numbers.map{ Int($0)! }
print(answer)
for (index, element) in letters.enumerated() {
for c in element {
switch c {
case "D":
answer[index] = answer[index] * answer[index]
case "T":
answer[index] = answer[index] * answer[index] * answer[index]
case "*":
if (index != 0) {
answer[index] *= 2
answer[index - 1] *= 2
} else {
answer[index] *= 2
}
case "#":
answer[index] *= -1
default:
break
}
}
}
return answer.reduce(0, +)
}
통과~