알고리즘/프로그래머스
프로그래머스 - 가장 큰 수
leeyuno
2020. 12. 23. 14:40
내가 푼 방식
먼저 내가 푼 방식은 배열안의 숫자를 반복해서 4자리 이상을 만들어 주고
그 문자열끼리 비교해고 붙여서 최종 문자열을 출력하였는데
마지막 테스트케이스 11번이 오류가 나서 확인해보니 [0, 0, 0, 0]이 입력될때 "0000"을 출력해주는 문제가 있어
마지막에 0만 비교를 해주는 조건을 걸었다.
func solution(_ numbers:[Int]) -> String {
var result: String = ""
var array = [[String]]()
numbers.forEach {
var arr = [String]()
var i = 5
var string = String($0)
while i > 0 {
string += String($0)
i -= 1
}
arr.append(String($0))
arr.append(String(string[string.startIndex ..< string.index(string.startIndex, offsetBy: 4)]))
array.append(arr)
}
array.sorted {
$0[1] > $1[1]
}.forEach({
result.append($0[0])
})
if Int(result) == 0 {
return "0"
} else {
return result
}
}
풀고 나서 본 다른분들이 푼 방식
좋아요를 많이 받은 분의 방식을 보니 문자열을 처음부터 두개씩 붙여가면서 바로바로 큰 값을 체크하셨다.
대단쓰...!👍
func solution(_ numbers:[Int]) -> String {
let sortedNumber = numbers.sorted {
return Int("\($0)\($1)")! > Int("\($1)\($0)")!
}
let result = sortedNumber.map { String($0) }.reduce("") { $0 + $1 }
return result.first == "0" ? "0" : result
}