[프로그래머스] 42746. 가장 큰 수
문제 링크
풀이 과정
순열을 구해 문자열을 더해나가는 방식으로 접근했지만 시간초과가 났습니다.
배열의 앞 요소부터 순서대로 이어 붙였을 때 가장 큰 수가 되도록 Comparator 클래스를 재정의해 사용했습니다.
테스트 케이스 11의 예외를 처리하기 위해 문자열의 맨 앞이 ‘0’이면 0을 리턴하도록 했습니다.
코드
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static String solution(int[] numbers) {
String answer = "";
String[] arr = new String[numbers.length];
for (int i = 0; i < numbers.length; i++)
arr[i] = String.valueOf(numbers[i]);
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o2 + o1).compareTo(o1 + o2);
}
});
if (arr[0].equals("0"))
return "0";
for (String s : arr)
answer += s;
return answer;
}
public static void main(String[] args) {
int[] numbers = {6, 10, 2};
// int[] numbers = {3, 30, 34, 5, 9};
// int[] numbers = {12, 121};
// int[] numbers= {0, 0, 0};
System.out.println(solution(numbers));
}
}
댓글남기기