[Lv. 2] 가장 큰 수프로그래머스/Level 22023. 7. 26. 14:44
Table of Contents
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/42746
난이도 : Level.2
언어 : Kotlin
문제 설명 :
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항 :
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
입출력 예 :
numbers | return |
[6, 10, 2] | "6210" |
[3, 30, 34, 5, 9] | "9534330" |
풀이 :
fun solution(numbers: IntArray): String = numbers.sortedWith { n1, n2 -> "$n2$n1".compareTo("$n1$n2") }.joinToString("").run { if (this[0] == '0') "0" else this }
sortedWith, Comparator를 사용해 정렬할 때, 앞 뒤를 바꿔서 비교하여 큰 수를 모두 합친다.
이 때 앞자리가 0이라면 0, 아니라면 구한 값을 리턴한다.
'프로그래머스 > Level 2' 카테고리의 다른 글
[Lv. 2] 다리를 지나는 트럭 (0) | 2023.07.26 |
---|---|
[Lv. 2] 2개 이하로 다른 비트 (0) | 2023.07.26 |
[Lv. 2] 소수 찾기 (0) | 2023.07.25 |
[Lv. 2] 롤케이크 자르기 (0) | 2023.07.24 |
[Lv. 2] 숫자 변환하기 (0) | 2023.07.24 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!