반응형
문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
- n은 10,000,000,000이하인 자연수입니다.
입출력 예시
print(solution(12345)) //[5,4,3,2,1]
내답안
func solution(_ n:Int64) -> [Int] {
return String(n).reversed().map {Int(String($0))!}
}
풀이
처음으로 쓴 코드
func solution(_ n:Int64) -> [Int] {
let s = String(n)
var result = [Int]()
for i in 0...s.count-1 {
result.append(s[s.count-1-i]!)
}
return result
}
string 을 배열로 변환. map {Int(String($0))} 해줘야함
문자열을 변환하는데 왜 String으로 타입을 바꾼 후 다시 Int로 변환해줘야 하나
Int를 String(n)으로 변환하면 String이 아니라 Character로 변환이 된다. 따라서 String으로 다시 해줘야함
문자열에 reversed() 하느냐 아니면 배열에 하느냐
배열에 할때는 compactMap을 쓰거나 map{Int(...)!} force unwrapping 해주지 않으면 [Int] 형식이 아니라 옵셔널로 [Int?] 가 되어버려서 반드시 해줘야 한다.
compactMap쓰면 그냥 [Int] 되는듯
func solution(_ n:Int64) -> [Int] {
let arr = String(n).compactMap { Int(String($0)) }
return arr.reversed()
}
func solution(_ n:Int64) -> [Int] {
return String(n).reversed().compactMap { Int(String($0)) }
}
compactMap과 map의 차이?
func solution(_ n:Int64) -> [Int] {
return "\(n)".compactMap { $0.hexDigitValue }.reversed()
}
?
728x90
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Swift 알고리즘] Programmers 자릿수 더하기 (0) | 2022.01.20 |
---|---|
[Swift 알고리즘] Programmers 정수/문자열 내림차순으로 배치하기 (0) | 2022.01.15 |
[Swift 알고리즘] Programmers 나누어 떨어지는 숫자 배열 (0) | 2022.01.14 |
[Swift 알고리즘] Programmers 최대공약수와 최소공배수 (0) | 2022.01.13 |
[Swift 알고리즘] Programmers 정수 제곱근 판별 (0) | 2022.01.12 |