코딩테스트

[Swift 알고리즘] 프로그래머스(Lv.1) - 자연수 뒤집어 배열로 만들기

유정주 2022. 2. 27. 09:43
반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 프로그래머스(Lv.1) - 자연수 뒤집어 배열로 만들기 문제를 풀었습니다.

 


목차


    Github

     

    GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

    스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

    github.com

     

    문제 링크

    https://programmers.co.kr/learn/courses/30/lessons/12932

     

    코딩테스트 연습 - 자연수 뒤집어 배열로 만들기

    자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345

    programmers.co.kr

     


    풀이

    input Int를 String으로 바꿔 뒤집어서 각 원소를 다시 Int로 바꾸면 됩니다.

     

    이 문제를 통해 compactMap이라는 것을 알게 되었습니다.

    compactMap은 1차원 배열에서 각 원소를 옵셔널 바인딩을 통해 nil을 제거합니다.

    따라서 이번 문제에서 사용하면 아래와 같은 차이가 있습니다.

     

    map을 이용한 풀이

    return String(n).reversed().map { Int(String($0))! }

    map은 Int로 변환할 때 nil이 생길 수 있기 때문에 직접 옵셔널 바인딩 또는 강제 언래핑을 해줘야 합니다.

     

    compactMap을 이용한 풀이

    return String(n).reversed().compactMap { Int(String($0)) }

    compactMap은 옵셔널 바인딩을 해주기 때문에 변환만 해주면 됩니다.

     


    전체 코드

    func solution(_ n:Int64) -> [Int] {
    //    return String(n).reversed().map { Int(String($0))! }
        return String(n).reversed().compactMap { Int(String($0)) }
    }

    아직은 초보 개발자입니다.

    더 효율적인 코드 훈수 환영합니다!

    공감 댓글 부탁드립니다.

     

     

    반응형