알고리즘 & 자료구조/문제 풀이

[프로그래머스 알고리즘 고득점 Kit][정렬][Java] 가장 큰 수

수수다 2026. 4. 28. 16:14

https://school.programmers.co.kr/learn/courses/30/lessons/42746

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

2개의 문자열을 사전순 역으로 하면
아래처럼 쉽게 할 수 있다. 
길이가 달라도 2개를 이어 붙여서 판단하면 간단하게 할 수 있다.

그렇게 정렬하면 
맨앞에 0이 오는 경우를 제외하고는 이어 붙여서 반환하면된다.

 

import java.util.*;

class Solution {
    public String solution(int[] numbers) {
        String[] numStr = new String[numbers.length];
        for(int i=0; i<numbers.length; i++) {
            numStr[i] = String.valueOf(numbers[i]);
        }

        Arrays.sort(numStr, (n1, n2) -> (n2+n1).compareTo(n1+n2));
        
        if(numStr[0].equals("0")) return "0";
        
        StringBuilder sb = new StringBuilder();
        for(String num : numStr) {
            sb.append(num);
        }
        
        
        return sb.toString();
    }
}