적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/Programmers

[Swift 알고리즘] Programmers 자연수 뒤집어 배열로 만들기

hongssup_ 2022. 1. 14. 17:26
반응형
문제 설명
자연수 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))!}
}

풀이

👉🏻 reversed() 사용법

 

처음으로 쓴 코드

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
반응형