기존 로직을 사용하면 1,2,3,5,6번 케이스에서 시간 초과 오류가 발생한다. 아마 for문을 중첩하여 돌며 정렬하도록 구현해두었기에 시간이 오래걸리는 것 같다.
import Foundation
func solution(_ numbers:[Int]) -> String {
var result = ""
var stringNumbers: [String] = []
for number in numbers {
stringNumbers.append("\(number)")
}
for i in 0..<stringNumbers.count {
for j in (i + 1)..<stringNumbers.count {
let a = stringNumbers[i] + stringNumbers[j]
let b = stringNumbers[j] + stringNumbers[i]
if b > a {
stringNumbers.swapAt(i, j)
}
}
}
for string in stringNumbers {
result += string
}
if result.hasPrefix("0") {
return "0"
}
return result
}
시간 초과 문제를 해결하기 위해 Swift의 sort를 사용하여 구현했다.
// 변경 전
for i in 0..<stringNumbers.count {
for j in (i + 1)..<stringNumbers.count {
let a = stringNumbers[i] + stringNumbers[j]
let b = stringNumbers[j] + stringNumbers[i]
if b > a {
stringNumbers.swapAt(i, j)
}
}
}
// 변경 후
stringNumbers.sort {
return $0 + $1 > $1 + $0
}