메모리: 405 MB, 시간: 2942.30 ms
코딩테스트 연습 > 정렬
정확성: 100.0
합계: 100.0 / 100.0
2024년 09월 19일 22:00:35
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
| numbers | return |
|---|---|
| [6, 10, 2] | "6210" |
| [3, 30, 34, 5, 9] | "9534330" |
※ 공지 - 2021년 10월 20일 테스트케이스가 추가되었습니다.
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
import java.util.Arrays;
class Solution {
public String solution(int[] numbers) {
int n = numbers.length;
String[] a = new String[n];
for (int i = 0; i < n; i++) {
// 숫자를 문자열로 변환
a[i] = "" + numbers[i];
}
Arrays.sort(a, (o1, o2) -> {
// 두 문자열 이어 붙였을때 비교해서 내림차순 정렬
return (o2 + o1).compareTo(o1 + o2);
});
String answer = "";
for (int i = 0; i < n; i++) {
answer += a[i];
}
// 만약 숫자가 "000..." 처럼 0으로 시작한다면 "0" 리턴
if (answer.charAt(0) == '0')
return "0";
return answer;
}
}