[TIL][프로그래머스/Swift] 정수 내림차순으로 배치하기

Eden·2024년 11월 5일
0

TIL

목록 보기
32/41
post-thumbnail

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

제한 조건

  • n은 1이상 8000000000 이하인 자연수입니다.

입출력 예

nreturn
118372873211

문제 해결 과정

func solution(_ n:Int64) -> Int64 {
    let digits = String(n).map { Int(String($0))! }
    let sortedDigits = digits.sorted(by: >)
    let sortedNumberString = sortedDigits.map { String($0) }.joined()
    return Int64(sortedNumberString)!
}
  1. 숫자를 문자열로 변환 후 자릿수 배열로 분해

    • String(n).map { Int(String($0))! }을 사용하여 Int64 값을 문자열로 변환한 뒤, 각 자릿수를 Int 배열로 분해
      • String(n): 숫자를 문자열로 변환
      • .map { Int(String($0))! }: 문자열의 각 문자를 순회하며 정수로 변환
  2. 자릿수 배열을 내림차순으로 정렬

    • digits.sorted(by: >)를 사용하여 자릿수를 내림차순으로 정렬
  3. 정렬된 자릿수를 다시 하나의 문자열로 합침

    • sortedDigits.map { String($0) }.joined()를 사용하여 정수 배열을 문자열 배열로 변환한 후, .joined()로 하나의 문자열로 결합
  4. 문자열을 다시 정수로 변환

    • Int64(sortedNumberString)!을 사용하여 문자열을 Int64로 변환 후 반환

배운 점

  • 문자열을 사용하여 자릿수를 다루는 방법
    • 숫자를 문자열로 변환한 후 map을 사용하여 각 자릿수를 배열로 만들 수 있음을 배웠다.
  • 내림차순 정렬

    • sorted(by: >) 메서드를 사용하여 배열을 내림차순으로 정렬하는 방법을 익혔다.
  • 강제 언래핑(!)의 사용

    • 문제의 조건이 주어졌기 때문에 변환의 성공이 보장되어 있어, Int(String($0))!Int64(...)!에서 강제 언래핑을 사용했다.

느낀 점

이번 문제를 풀면서 자릿수를 다루는 다양한 방법을 익힐 수 있었습니다. map, sorted, joined와 같은 고차 함수들을 통해 코드를 간결하고 직관적으로 작성하는 법을 배우게 되어 유익했다.

profile
Just living the daydream, one moment at a time.
post-custom-banner

0개의 댓글