프로그래머스 문제 링크 :https://school.programmers.co.kr/learn/courses/30/lessons/81301?language=swift
💡 내가 제출한 풀이
import Foundation
func solution(_ s: String) -> Int {
let numbers = [ "zero" : "0", "one" : "1", "two" : "2", "three" : "3", "four" : "4", "five" : "5", "six" : "6", "seven" : "7", "eight" : "8", "nine" : "9" ]
var result = s
for num in numbers {
result = result.replacingOccurrences(of: num.key, with: num.value)
}
return Int(result)!
}
💡 풀이 과정
영단어와 숫자가 섞여있는 문자열을 전부 숫자로 바꿔서 반환하는 문제이다.
one == 1
two == 2
이렇게 치환된다.
문자열 안에 있는 특정 부분을 바꾸어야 하기 때문에 replace관련 메소드 중, replacingOccurrences(of:with:) 메소드를 사용했다.
import Foundation
func solution(_ s:String) -> Int {
var string = s
string = string.replacingOccurrences(of: "zero", with: "0")
string = string.replacingOccurrences(of: "one", with: "1")
string = string.replacingOccurrences(of: "two", with: "2")
string = string.replacingOccurrences(of: "three", with: "3")
string = string.replacingOccurrences(of: "four", with: "4")
string = string.replacingOccurrences(of: "five", with: "5")
string = string.replacingOccurrences(of: "six", with: "6")
string = string.replacingOccurrences(of: "seven", with: "7")
string = string.replacingOccurrences(of: "eight", with: "8")
string = string.replacingOccurrences(of: "nine", with: "9")
return Int(string)!
}
일단 이렇게 써 두고 나니 개선점이 보인다.
반복문을 사용하면 편리할 것 같았다.
반복문 안에서 사용할 데이터가 필요하기 때문에 숫자 영단어를 dictionary 타입의 값으로 담아두었다.
문자열을 숫자로 바꾸는 것이기 때문에 key를 문자열, value를 숫자값으로 지정했다.
딕셔너리의 키와 값을 사용해서 반복문으로 result값을 계속 변경해주었다.
let numbers = [ "zero" : "0", "one" : "1", "two" : "2", "three" : "3", "four" : "4", "five" : "5", "six" : "6", "seven" : "7", "eight" : "8", "nine" : "9" ]
var result = s
for num in numbers {
result = result.replacingOccurrences(of: num.key, with: num.value)
}
코드를 바꾸니 속도가 대체적으로 조금 빨라진 부분이 보인다.
코드양이 줄어서인 것 같다ㅋㅋ 반복문 같은 건 잘 못 사용하면 속도이슈가 생긴다는 이야기를 많이 들어서 사용할 때 조심하려고 한다(레벨 1이면서..)
https://developer.apple.com/documentation/foundation/nsstring/1412937-replacingoccurrences
'알고리즘 > Programmers' 카테고리의 다른 글
[Swift_Programmes] K번째수 (0) | 2024.01.04 |
---|---|
[Swift_Programmes] 문자열 내 마음대로 정렬하기 (0) | 2024.01.03 |
[Swift_Programmes] 최소직사각형 (1) | 2023.12.27 |
[Swift_Programmes] 크기가 작은 부분 문자열 (0) | 2023.12.26 |
[Swift_Programmes] 삼총사 (0) | 2023.12.11 |