가장 큰 수
Updated:
저번에 풀었던 LeetCode의 Largest-Number와 똑같은 문제이다.
compare메소드를 적절하게 작성하는것이 아주 중요한 문제이다
by Java
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] arr = new String[numbers.length];
for(int i=0;i<numbers.length;i++) {
arr[i] = String.valueOf(numbers[i]);
}
Arrays.sort(arr,(a,b)->compare(a,b));
if(arr[0].equals("0")) return "0";
StringBuilder answer = new StringBuilder();
for(int i=0;i<arr.length;i++) {
answer.append(arr[i]);
}
return answer.toString();
}
private int compare(String a,String b) {
String s1 = a+b;
String s2 = b+a;
return s2.compareTo(s1);
// a : "2", b:"10"일때, 우리는 a,b순서를 유지한상태로 리턴해야 한다
// 그러려면 a가 b보다 앞서야 하고 리턴값을 -1로 만들어줘야 한다
// 그러려면 "210".compareTo("102")를 하게 되면 1이 리턴되므로
// "102".compareTo("210")을 해서 -1을 리턴하게 하려면 위의 경우에 맞춰서 코드를 만들어야한다
}
}
Leave a comment