[Level 2 / 정렬] 가장 큰 수 + Swift

sanghee·2021년 8월 30일
0

🙈코딩테스트

목록 보기
19/52
post-thumbnail

나의 실패 풀이

문제에서 주어진 입출력은 맞았지만 채점 과정에서 오류와 시간초과가 많이 떳다😫 . 3번을 반복하고 잘라서 반복해서 그런가보다.

func solution(_ numbers:[Int]) -> String {
    let sortedNumArr = numbers.map({ String($0) }).sorted(by: { repeatNumSix($0) > repeatNumSix($1) })

    return sortedNumArr.joined()
}

func repeatNumSix(_ stringNum: String) -> Int {
    let str = String(repeating: "\(stringNum)", count: 3)
    let endIdx: String.Index = str.index(str.startIndex, offsetBy: 2)
    
    return Int(str[...endIdx])!
}

다른 사람의 풀이

결국 다른 사람의 풀이를 보았다. 이전에 자바스크립트로 풀 때 같은 방법으로 푼 사람이 있었다. 문자열로 서로를 더한 후 비교하는 방식으로 비교해 비열을 정렬한 후 합쳐 정답을 구한다.

func solution(_ numbers:[Int]) -> String {
    let sortedNumArr = numbers.sorted {
        Int("\($0)\($1)")! > Int("\($1)\($0)")!
    }

    let answer = sortedNumArr.map({ String($0) }).reduce("") { $0 + $1 }
    
    return sortedNumArr.first == 0 ? "0" : answer
}
profile
👩‍💻

0개의 댓글