🔴 문제
🔵 풀이 1 - for...in, enumerated() 활용
func solution1(_ phone_number:String) -> String {
let fourthIndex = phone_number.count - 4
var blurredNumber: String = ""
for (i, num) in phone_number.enumerated() {
if i < fourthIndex {
blurredNumber += "*"
} else {
blurredNumber += String(num)
}
}
return blurredNumber
}
solution1("01012345678") // "*******5678"
solution1("1234") // "1234"
* enumerated()란?
🔵 풀이 2 - suffix(_:) 활용
func solution2(_ phone_number:String) -> String {
let len: Int = phone_number.count
let stars: String = String(repeating: "*", count: len - 4)
let visible: String = String(phone_number.suffix(4))
return stars + visible
}
solution2("01012345678") // "*******5678"
solution2("1234") // "1234"
* suffix(_:)란?
suffix는 subsequence를 반환하기때문에, 확실히 하기 위해 String()으로 감쌌다.
🔵 풀이 3 - map 활용
map을 활용한 풀이가 있길래 가져왔다. 여기서 왜 enumerated()를 써야하는지, $0.offset, $0.element가 무엇인지는 모르겠지만... 나중에는 알게 되길 바란다.
func solution3(_ phone_number:String) -> String {
guard phone_number.count > 4 else { return phone_number }
return String(phone_number.enumerated().map{($0.offset<phone_number.count-4 ? Character("*") : $0.element)})
}
solution3("01012345678") // "*******5678"
solution3("1234") // "1234"