알고리즘
[Swift 알고리즘] - 외계행성의 나이 (Programmers)
Peppo
2022. 11. 1. 23:45
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