Skip to content

[Algorithm] 자연수 뒤집어 배열로 만들기 #64

Description

@hwangJi-dev

💬 문제

[코딩테스트 연습 - 자연수 뒤집어 배열로 만들기](https://school.programmers.co.kr/learn/courses/30/lessons/12932)


💬 풀이

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

💬 알게된 문법

✅ compactMap

  • 시퀀스의 각 요소를 transform한 결과들 중 nil이 아닌 것들만 반환한다.
return Array(String(n)).reversed().compactMap({Int(String($0))})
// [5, 4, 3, 2, 1]
// map과 비교 -> map은 강제 언래핑 또는 옵셔널 바인딩을 해주어야 한다.
return Array(String(n)).reversed().map({Int(String($0))! })
// ✅ [ map과 비교 ]
letmapped:[Int?]= possibleNumbers.map{ str inInt(str)}
// [1, 2, nil, nil, 5] (map은 nil을 포함함)
letcompactMapped:[Int]= possibleNumbers.compactMap{ str inInt(str)}
// [1, 2, 5] (compactMap은 nil을 제외)
  • 배열에서 nil을 제거하고 옵셔널 바인딩을 하고싶다면 compactMap을 사용하자!
  • 시간복잡도: O(m+n)

https://developer.apple.com/documentation/swift/sequence/compactmap(_:)


✅ flatMap

  • 시퀀스의 각 요소를 transform한 결과들을 연결하여 반환한다.
  • 2차원 배열 → 1차원 배열로 flat하고 싶을 때 사용하자!
letnumbers=[1,2,3,4]letmapped= numbers.map{Array(repeating: $0, count: $0)}
// [[1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]
letflatMapped= numbers.flatMap{Array(repeating: $0, count: $0)}
// [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
  • 시간복잡도: O(m+n)

https://developer.apple.com/documentation/swift/sequence/flatmap(_:)-jo2y

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions