문제 설명
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
n
은 1이상 8000000000 이하인 자연수입니다.입출력 예
n return 118372 873211
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)!
}
숫자를 문자열로 변환 후 자릿수 배열로 분해
String(n).map { Int(String($0))! }
을 사용하여 Int64
값을 문자열로 변환한 뒤, 각 자릿수를 Int
배열로 분해String(n)
: 숫자를 문자열로 변환.map { Int(String($0))! }
: 문자열의 각 문자를 순회하며 정수로 변환 자릿수 배열을 내림차순으로 정렬
digits.sorted(by: >)
를 사용하여 자릿수를 내림차순으로 정렬정렬된 자릿수를 다시 하나의 문자열로 합침
sortedDigits.map { String($0) }.joined()
를 사용하여 정수 배열을 문자열 배열로 변환한 후, .joined()
로 하나의 문자열로 결합문자열을 다시 정수로 변환
Int64(sortedNumberString)!
을 사용하여 문자열을 Int64
로 변환 후 반환map
을 사용하여 각 자릿수를 배열로 만들 수 있음을 배웠다.내림차순 정렬
sorted(by: >)
메서드를 사용하여 배열을 내림차순으로 정렬하는 방법을 익혔다.강제 언래핑(!
)의 사용
Int(String($0))!
및 Int64(...)!
에서 강제 언래핑을 사용했다.이번 문제를 풀면서 자릿수를 다루는 다양한 방법을 익힐 수 있었습니다. map
, sorted
, joined
와 같은 고차 함수들을 통해 코드를 간결하고 직관적으로 작성하는 법을 배우게 되어 유익했다.