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

2020. 7. 9. 13:03프로그래머스/LEVEL 2

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        
        String[] numString = new String[numbers.length];
        
        for(int i=0; i<numString.length; i++){
            numString[i] = Integer.toString(numbers[i]);
        }
        
        Arrays.sort(numString, new Comparator<String>(){
            public int compare(String x, String y){
                return (y+x).compareTo(x+y);
            }
        });
     
        if(numString[0].charAt(0)=='0'){
            return "0";
        }else{
            for(int i=0; i<numString.length; i++){
                answer += numString[i];
            }
        }  
        
        return answer;
    }
}

1. 정렬을 다루는 문제

2. 앞에숫자+뒤에숫자와 뒤에숫자+앞에숫자의 크기를 비교하여 배열을 정렬한다.

3. 문자열의 형태를 정렬하므로 compareTo를 통해 사전순 정렬한다.

4. 정렬을 다했는데 맨 앞자리가 0 인경우 "0"을 리턴하게 한다. (0 뒤에 0이 더있을 수 있지만 문자열이므로 00000000 이런식으로 answer이 정해질 수 있기 때문)