Largest Number
Updated:
String의 sort를 문제의 조건대로 정확히 할 수 있는지를 물어보는 문제이다.
아래 코드의 예제에서도 언급했지만, 숫자를 크게하기 위해서는, 아스키 코드가 큰 값이 먼저 오게 만들어야 한다. 그러기 위해서는, 여러가지 방법이 있을수 있지만, 숫자를 어떻게 하면 더 크게 할수 있을까? 라는 생각을 가지고 Sorting을 하는것이 방법인것 같다
아래의 코드를 참고해보면 될것 같다
by Java
class Solution {
public String largestNumber(int[] nums) {
String[] number = new String[nums.length];
for(int i=0;i<nums.length;i++) {
number[i] = String.valueOf(nums[i]);
}
Arrays.sort(number,(a,b)->compare(a,b));
StringBuilder sb= new StringBuilder();
for(int i=0;i<number.length;i++) {
sb.append(number[i]);
}
if(sb.charAt(0)=='0' && sb.length()>=1) return "0";
return sb.toString();
}
private int compare(String a,String b) {
String first = a+b;
String second = b+a;
return second.compareTo(first);
//ex)
//a: 2, b: 10
// a+b : 210
// b+a : 102
//(O) 102.compareTo(210)-> -1(a,b 상태유지, a가 b보다 더 앞에있음) -> 2, 10
//(X) 210.compareTo(102) -> 1(a가 b보다 뒤에 있음) -> 10,2
}
}
Leave a comment