Codewars(알고리즘)/7Kyu

[Codewars] [7Kyu] ToLeetSpeak

Dannian 2021. 3. 4. 17:57
반응형
 

Codewars: Achieve mastery through challenge

Codewars is where developers achieve code mastery through challenge. Train on kata in the dojo and reach your highest potential.

www.codewars.com

이번 문제는 입력된 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] Count the Digit  (0) 2021.03.05
[Codewars] [7Kyu] Sum of odd numbers  (0) 2021.03.04