반응형
이번 문제는 입력된 String을 대치시켜서 다시 String으로 반환하는 문제입니다.
1. Swift
1-1. 본인의 풀이
func toLeetSpeak(_ s : String) -> String {
let leetSpeakArr : [Character : Character] = [
"A" : "@",
"B" : "8",
"C" : "(",
"D" : "D",
"E" : "3",
"F" : "F",
"G" : "6",
"H" : "#",
"I" : "!",
"J" : "J",
"K" : "K",
"L" : "1",
"M" : "M",
"N" : "N",
"O" : "0",
"P" : "P",
"Q" : "Q",
"R" : "R",
"S" : "$",
"T" : "7",
"U" : "U",
"V" : "V",
"W" : "W",
"X" : "X",
"Y" : "Y",
"Z" : "2",
" " : " "
]
return String(s.compactMap {leetSpeakArr[$0]})
}
저는 각 대치할 스트링들에 대해서 모두 Dictionary에 저장하고, 입력 받은 String의 각 character를 Key값으로 이용해서 새로운 String을 만들었습니다.
1-2. Best Solution
let dict : [Character : Character] =
[ "A" : "@",
"B" : "8",
"C" : "(",
"E" : "3",
"G" : "6",
"H" : "#",
"I" : "!",
"L" : "1",
"O" : "0",
"S" : "$",
"T" : "7",
"Z" : "2",
]
func toLeetSpeak(_ s : String) -> String {
return String(s.map { dict[$0] ?? $0 })
}
위의 코드는 마찬가지로 Dictionary를 이용했지만, 변경 되는 것들에 대해서만 정의하고, 해당 Key가 없는 경우에는 원래의 String을 그대로 반환시켜주도록 코드를 짰습니다.
이번 문제는 Dictionary에 대해서 이해를 하고 있었다면 쉽게 풀 수 있는 문제였습니다.
반응형
'Codewars(알고리즘) > 7Kyu' 카테고리의 다른 글
[Codewars] [7Kyu] V A P O R C O D E (0) | 2024.11.30 |
---|---|
[Codewars] [7Kyu] Highest and Lowest (0) | 2024.11.30 |
[Codewars] [7Kyu] Count the Digit (0) | 2021.03.05 |
[Codewars] [7Kyu] Sum of odd numbers (0) | 2021.03.04 |