숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어진다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해라.
위와 같이 결과값을 리턴해주면 된다.
import Foundation
func solution(_ s:String) -> Int {
var arr: String = s
if arr.contains("one") {
arr = arr.replacingOccurrences(of:"one", with: "1")
}
if arr.contains("two") {
arr = arr.replacingOccurrences(of:"two", with: "2")
}
if arr.contains("three") {
arr = arr.replacingOccurrences(of:"three", with: "3")
}
if arr.contains("four") {
arr = arr.replacingOccurrences(of:"four", with: "4")
}
if arr.contains("five") {
arr = arr.replacingOccurrences(of:"five", with: "5")
}
if arr.contains("six") {
arr = arr.replacingOccurrences(of:"six", with: "6")
}
if arr.contains("seven") {
arr = arr.replacingOccurrences(of:"seven", with: "7")
}
if arr.contains("eight") {
arr = arr.replacingOccurrences(of:"eight", with: "8")
}
if arr.contains("nine") {
arr = arr.replacingOccurrences(of:"nine", with: "9")
}
if arr.contains("zero") {
arr = arr.replacingOccurrences(of:"zero", with: "0")
}
return Int(arr)!
}
이번 문제가 가장 쉬웠다. 이렇게 단순한 반복으로 해결해도 되나 싶었는데, 다른 분들의 풀이도 접근 방식이 비슷했다.
replacingOccurences를 이용해 배열에 들어있는 문자들을 숫자로 치환해주고 Int형태로 리턴해주었다. 이때 배열이 nil일 수도 있기 때문에 Int(arr)는 옵셔널 타입이라 unwrap되어 리턴되어야한다. 이때 확실하게 값이 있는 것을 알기에 !를 사용해주었다.
이전 문제를 해결할 때 배웠던 replacingOccurences가 바로 생각나서 이번 문제를 금방 해결할 수 있었다. 확실히 몰랐던 것들을 기록하며 자주 쓰게되면 쉽게 기억해낼 수 있는 것 같다.