https://school.programmers.co.kr/learn/courses/30/lessons/42746
굉장히 간단한 문제라고 생각했는데 실제로는..
정말 오래 걸렸었고 지금 와서는 왜 이런 생각을 처음부터 하지 못했을까..? 라는 생각이 들었습니다...
각 숫자를 비교하여 정렬을 하려고 했을 때를 보게 되면
10 과 2 중 10 이 크지만 실제로는 2가 10보다 앞자리 수로 와야 더 큰 수가 됩니다!
그러면.. 첫째자리를 비교해서 더 큰수를 앞으로 보내고 첫째 자리가 같다면 둘쨰자리를 비교해야겠다 라는 생각이였지만
굉장히 복잡하게.. 반복문.. 넣고 인덱스로 비교하고... 둘째자리는 없는 경우도 있기 때문에 굉장히 복잡했습니다..
하지만!
아래처럼 풀면 금방 끝나버리더군요!
func solution(_ numbers:[Int]) -> String {
var number = numbers.map{String($0)}
var result = number.sorted { $0+$1 > $1+$0 }.joined()
if result.first == "0" {
return "0"
}
return result
}
입출력 2번째 예시
1. 330 : 303 -> 330 반환
2. 33034 : 34330 -> 34330 반환
3. 343305 : 534330 -> 534330 반환
4. 5343309 : 9534330 -> 9534330 반환
엄청 간단하죠?
문자열로 바꾸고 각 원소들을 합친 문자열로 비교해서 내림차순으로 정렬을 하게 되면 가장 큰 수가 된다는 것이죠!
근데.. 만약 코테에 나온다면.. 시간안에 생각할 수 있을지가 의문이네요..........