티스토리 뷰

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/120834

 

문제 사진

내 풀이

import Foundation

let ageKey: [Int: String] = [
    0: "a",
    1: "b",
    2: "c",
    3: "d",
    4: "e",
    5: "f",
    6: "g",
    7: "h",
    8: "i",
    9: "j"
]

func solution(_ age:Int) -> String {
    var result: [String] = []
    let digits: [Int] = String(age).compactMap { Int(String($0))}
    for num in digits {
        result.append(ageKey[num]!)
    }
    
    return result.joined()
}

solution(23) // "cd"

 

  • Dictionary로 풀면 가능할것 같아 진행했다.[0: "a"] 이런식으로
  • result라는 빈배열을 가진 변수를 만들고
  • 23 → [2, 3] 으로 만들기
    • 23 >> ["2", "3"] >> [2, 3] 으로 변환
    let digits: [Int] = String(age).compactMap { Int(String($0))}
  • digits의 각 요소들을 ageKey[num] 으로 접근하고 해당 값 result 배열에 append

// age가 23이라면 result는 위의 과정을 걸쳐 아래와 같이 되어있음
var result = ["c", "d"]
  • joined()라는 메서드를 사용해 요소들을 다 합침

다른사람의 풀이

func solution(_ age:Int) -> String {
    let alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]
    return String(age).map{alphabet[Int(String($0))!]}.joined()
}

가장 직관적이라고 생각했다.

 

age: Int → [Int] 형태로 만들어 이걸 alphabet의 인덱스로 사용 한점이 인상깊었다.

728x90