알고리즘 - 프로그래머스 정수 내림차순으로 배치하기 (Swift)
2020. 7. 2. 16:56ㆍAlgorism
반응형
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.제한 조건
- n은 1이상 8000000000 이하인 자연수입니다.
네 이문제는 내부 함수를 사용하면 비교적 쉽게 정렬이 가능합니다.
그래도 중요한건 어떻게 정렬이 되고 다시 Int64타입으로 변환하는지 이해하는게 중요할 것 같네요.
아래 2가지 방법으로 문제를 해결할 수 있어요.
먼저 스트링 타입으로 변환이후에 map함수를 실행하면 Array<string.element>타입이 되기 때문에 join함수를 사용할 수가 없어요.
# string.element는 Charactertypealias Element = Character 즉 Character 타입입니다. 그래서 String의 함수를 사용할 수 가 없어요.
그래서 맵 함수 내부에서 String으로 형변환을 진행 이후 익숙한 sorted를 내림차순으로 진행하고
최종적으로 joined를 사용하여 문자열을 모두 붙여준 뒤에 Int64타입으로 형변환하여 리턴해주는 심플한!? 방법입니다.
func solution(_ n:Int64) -> Int64 {
return Int64(String(n).map { String($0) }.sorted(by: >).joined())!
}
다른 방법은 위에 처럼 많은 함수를 사용하지않고 내부적으로 해결해 버립니다.
문자열로 변환 -> 정렬 -> 문자열로 형변환 -> 인트타입 형변환 매우 심플하조?
func solution(_ n:Int64) -> Int64 {
return Int64(String(String(n).sorted(by: >)))!
}
1번은 문자열에 추가적으로 작업이 필요할 경우에 사용하면 될 것 같아요.
2번째는 딱 저문제를 해결하기 위한 방법 같이 느껴지네요.
반응형
'Algorism' 카테고리의 다른 글
알고리즘 - 프로그래머스 2020 카카오 인턴쉽 키패드 누르기 (Swift) (0) | 2020.07.03 |
---|---|
알고리즘 - 프로그래머스 제일 작은 수 제거하기 (Swift) (0) | 2020.07.03 |
알고리즘 - 프로그래머스 자릿수 더하기 (Swift) (0) | 2020.07.02 |
알고리즘 - 프로그래머스 문자열을 정수로 바꾸기 (Swift) (0) | 2020.07.02 |
알고리즘 - 프로그래머스 약수의 합 (Swift) (0) | 2020.07.02 |