https://programmers.co.kr/learn/courses/30/lessons/42746
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] nums = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
nums[i] = Integer.toString(numbers[i]);
}
Arrays.sort(nums, (o1, o2) -> (o2 + o1).compareTo(o1 + o2));
StringBuffer sb = new StringBuffer();
for (String num : nums) {
sb.append(num);
}
if (sb.toString().startsWith("0")) {
return "0";
}
else {
return sb.toString();
}
}
}
Arrays.sort
를 할때 왜 저렇게 소팅을 하고 풀지? 라고 생각 했는데 String
배열을 순서대로 붙였을때 가장 큰 수를 만드려면 큰 수 순서대로 소팅을 하면 되니까 저렇게 한다는걸 깨닳았다.
그리고 마지막에 0
으로 시작하면 0
을 리턴해야하는 예외처리가 필요하다.