Archive/Questions
[programmers/Swift] 가장 큰 수
Marco
2022. 5. 10. 18:51
728x90
programmers.co.kr - 코딩테스트연습 - Lv.2 - 정렬 - 가장 큰 수
코딩테스트 연습
기초부터 차근차근, 직접 코드를 작성해 보세요.
programmers.co.kr
Constraints :
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
//
// Created by Yongwoo Marco on 2022/05/10.
// Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//
func solution(_ numbers:[Int]) -> String {
let sorted = numbers.sorted { Int("\($0)\($1)")! > Int("\($1)\($0)")! }
guard sorted[0] != 0 else { return "0" }
return sorted.reduce("") { $0 + String($1) }
}
print(solution([6, 10, 2])) // "6210"
print(solution([3, 30, 34, 5, 9])) // "9534330"
How I tried this :
처음 아이디어는 모든 경우의수를 순열을 이용해서 찾은뒤 정렬하는 구현이었는데
역시 시간초과가 나왔다.
두번째 아이디어는 sorted 클로저를 계산해보려했는데
"34" "3" "30" 세가지를 줄세울때 "34330" 이 나오질 않았다..
sorted 클로저가 일일이 길어지는것보다 $0, $1 또는 lhs rhs 값을 주는 이유가
두 값을 비교하며 처리한다는 점을 바로 이용했다. "343" "334" 직접 비교해보는 형태로 구현했다.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90