가장 큰 수


프로그래머스 [가장 큰 수]

문제보기
Alt text

소스코드


import java.util.Arrays;
import java.util.Comparator;

class Solution {
    public static String solution(int[] numbers) {
        String[] numbersStrArr = new String[numbers.length];

        for (int i = 0; i < numbers.length; i++) {
            numbersStrArr[i] = numbers[i] + "";
        }

        Arrays.sort(numbersStrArr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                long a = Long.parseLong(o2 + o1);
                long b = Long.parseLong(o1 + o2);
                return Long.compare(a, b);
            }
        });

        boolean isZero = true;
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < numbersStrArr.length; i++) {
            sb.append(numbersStrArr[i]);

            if (!"0".equals(numbersStrArr[i])) isZero = false;
        }

        if (isZero) return "0";

        return sb.toString();
    }
}