알고리즘 문제 풀이

[Swift] 프로그래머스 LV2. 가장 큰 수

lgvv 2022. 4. 2. 02:01

프로그래머스 LV2. 가장 큰 수

 

✅ 프로그래머스 LV2. 가장 큰 수

 

이번 문제를 포스팅 하는 이유는 조금 특이한 정렬 방법 때문이다.

 

우선 정렬를 저렇게 하는데, 저렇게 하면 각 숫자의 길이에 관계없이, 정렬을 할 수가 있다.

그리고 0000을 반환하는 옵션을 하나 추가하는데, 내림차순임으로 가장 앞자리가 0이면 모든 값이 0이라는 의미니까 이렇게 작성한다.

 

//https://programmers.co.kr/learn/courses/30/lessons/42746
import Foundation

struct p42746 {
    
    static func run() {
//        print(p42746.solution([6, 10, 2])) // 6210
//        print(p42746.solution([3, 30, 34, 5, 9])) // 9534330
        print(p42746.solution([0, 0, 0])) // 0
    }
    
    static func solution(_ numbers:[Int]) -> String {
        // 차례로 앞 두개를 순서를 바꾸어서 이어 붙여보기
        var answer = ""
        
        let list = numbers.sorted { Int("\($0)\($1)")! >  Int("\($1)\($0)")!}
        answer = list.map { "\($0)" }.joined()
        if answer.first == "0" { answer = "0" }
        return answer
    }
}