swift로 풀면 이득보는 것 같은 문제였다. 문제의 내용을 보면
영어와 숫자가 섞여서 나오는 문자열을 숫자로 바꾸는 문제였다. replacingOccurrences를 쓰면 금방 풀릴 것 같았는데 실제로도 금방 풀렸다.
func solution(_ s:String) -> Int {
var resultString: String = s
enum Numbers: String, CaseIterable {
case zero, one, two, three, four, five, six, seven, eight, nine
var intValue: Int {
switch self {
case .zero: return 0
case .one: return 1
case .two: return 2
case .three: return 3
case .four: return 4
case .five: return 5
case .six: return 6
case .seven: return 7
case .eight: return 8
case .nine: return 9
}
}
}
for number in Numbers.allCases {
resultString = resultString.replacingOccurrences(of: number.rawValue, with: String(number.intValue))
}
return Int(resultString) ?? 0
}
우선 각 숫자를 String enum으로 묶어놓고 intValue를 반환할 수 있도록 프로퍼티를 하나 설정했다.
CaseIterable을 채택해 enum을 반복문 돌 수 있도록 해주었다.
모든 case를 돌면서 number.rawValue(여기서는 문자로 된 숫자들)을 intValue로 바꿔준 뒤에 변환한 숫자 스트링을 Int로 변환해 반환해주었다.
replacingOccurrences가 들어있는 모든 문자를 치환해주는 놈이라 크게 속썩이지 않고 금방 풀 수 있었다.
반응형
'Algorithm' 카테고리의 다른 글
Swift로 프로그래머스 문제 풀기 - 로또의 최고 순위와 최저 순위 (0) | 2022.07.04 |
---|---|
Swift로 Leet Code 문제 풀기 - 28. Implement strStr() (Easy) - range(of:)/distance(from: to:) 사용해보기 (0) | 2022.06.30 |
Swift로 Leet Code 문제 풀기 - 27. Remove Element (Easy) (0) | 2022.06.29 |
Swift로 Leet Code 문제 풀기 - 26. Remove Duplicates from Sorted Array (Easy) (0) | 2022.06.28 |
Swift로 Leet Code 문제 풀기 - 21. Merge Two Sorted Lists (Easy) (0) | 2022.06.27 |