문제에서 주어진 입출력은 맞았지만 채점 과정에서 오류와 시간초과가 많이 떳다😫 . 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
}