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

최대 1 분 소요

제한사항:

  • 1<=numbers.length<=100,000
  • 0<=numbers.[i]<=1,000
  • 수가 너무 클 수 있으니 문자열로 바꾸어 return

예시) [6,10,2] -> return: 6210 [3,30,34,5,9] -> return 9534330

풀이법: 자바 메소드 중 compareTo()를 사용하면 String클래스의 문자열간 큰기를 비교할 수 있다. (b+a)compareTo(a+b)를 사용해 b+a가 a+b보다 크다면 b와 a의 자리를 바꿔줌

import java.util.*;

class Solution {
    
    public String solution(int[] numbers) {
        String answer = "";
        String result[] = new String[numbers.length];
        
        for(int i=0; i<numbers.length; i++)
        {
            result[i]=String.valueOf(numbers[i]); //int형인 numbers를 String형으로 변환
        }
        
        Arrays.sort(result, new Comparator<String>() {
           
            @Override //하위클래스의 메소드가 상위클래스를 덮음
            public int compare(String a, String b){
                return (b+a).compareTo(a+b);  //b+a가 a+b보다 크다면 b가 앞으로
            }
        });
        
        if(result[0].equals("0")) //모든 원소가 0으로 이루어져 있을 경우
            return "0";
        
        for(String a : result)
            answer += a;
        
        return answer;
    }
}

카테고리:

업데이트: