[Algorithm] 프로그래머스 숫자 문자열과 영단어
Updated:
문제 설명
나의 풀이
import Foundation
var numberInEnglish = ["zero", "one", "two",
"three", "four", "five",
"six", "seven", "eight", "nine"]
var number = ["1","2","3","4","5","6","7","8","9","0"]
func solution(_ s:String) -> Int {
var word: String = ""
var answer = ""
for char in s {
if number.contains(String(char)) {
answer += String(char)
}
else {
word += String(char)
if numberInEnglish.contains(word) {
answer += String(numberInEnglish.firstIndex(of: word)!)
word = ""
}
}
}
let answerInt = Int(answer)!
return answerInt
}
고민한 점
기존에 python에서는 문자열끼리 더하고 빼면 되는데, Swift는 타입에 민감해서 그렇지 않다.. 따라서String.Element
를 String
으로 형변환해서 더해주어야한다.
💡 추가로 contains()
를 사용해서 해당 원소를 포함하는지 확인할 수 있다.
⚠️ 또한 항상 TC를 제한사항을 보고 몇 개 만들어서 넣어보자!! 이번에는 주어진 testcase에는 0이 들어간 것이 없었지만 실제 testcase에는 0이 포함되어있어서 만약 0을 빼먹고 작성하면 틀리게 된다.
괜찮은 남의 풀의
import Foundation
func solution(_ s:String) -> Int {
let dic = [
"zero": "0", "one": "1", "two": "2", "three": "3", "four": "4", "five": "5",
"six": "6", "seven": "7", "eight": "8", "nine": "9"
]
var s = s
for i in dic {
s = s.replacingOccurrences(of: i.key, with: i.value)
}
return Int(s)!
}
replacingOccurrences(of:_with:_)
를 활용해서 해결한 것이 아주 인상깊었다..
Leave a comment