가장 큰 수

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