적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Algorithm/Programmers

[Swift 알고리즘] Programmers 정수/문자열 내림차순으로 배치하기

hongssup_ 2022. 1. 15. 00:05
반응형

Level 1 연습문제

정수 내림차순으로 배치하기

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

 

입출력 예시

print(solution(118372)) //873211

 

내 답안

func solution(_ n:Int64) -> Int64 {
    let arr = String(n).map{ String($0) }
    return Int64(String(arr.sorted().joined().reversed()))!
}

 

모범답안

func solution(_ n:Int64) -> Int64 {
    return Int64(String(String(n).sorted(by: >)))!
}
func solution(_ n:Int64) -> Int64 {
    return Int64(String(String(n).sorted{ $0 > $1 }))!
}

굳이 배열로 바꿔주지 않고 String으로 정렬하고 다시 바꿔주는게 나은 듯 하다. 

 

실패 - 런타임 에러

처음에 compactMap을 써주니 런타임 에러가 났다. 

map이랑 뭐가 다른거야 어떨 때써야 하는거야...

 

문자열 내림차순으로 배치하기

문제 설명
 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
 s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한 사항
- str은 길이 1 이상인 문자열입니다.

 

print(solution("Zbcdefg")) //"gfedcbZ"
func solution(_ s:String) -> String {
    return String(s.sorted(by: >))
}
728x90
반응형