[알고리즘] 프로그래머스 가장 큰 수 (레벨 2 - 정렬)

2022. 12. 5. 22:07알고리즘

프로그래머스 레벨2 문제 중 '가장 큰 수'라는 문제입니다. 정렬 문제입니다.

  • 문제 출처 : 링크
  • 정렬

풀이 포인트

  • 해당 문제는 제가 풀이를 찾다찾다... 해결이 안되서 다른 분 풀이를 참고하였습니다. 
  • 가장 큰 수를 만드는 방법을 먼저 찾아야 됩니다.
  • 주어진 예시를 적절히 배치할 때 큰수로 만들려면 위 그림처럼 만들어야 됩니다.
  • 위 처럼 비교를 하기 위해서는 Interger Type을 비교하는 것이 아니라 String Type을 비교함으로서 간단하게 처리할 수 있습니다.
import java.util.*;

class Solution {

    public String solution(int[] numbers) {
        String answer = "";
        String[] str = new String[numbers.length];

        for(int i = 0; i < numbers.length; i++){
            str[i] = String.valueOf(numbers[i]);
        }     
        
        Arrays.sort(str, new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                return (b+a).compareTo(a+b);
            }
        });
        
        for(int i = 0; i < str.length; i++){
            System.out.println(str[i]);
        }
        
        if (str[0].equals("0")) return "0";
        
        for(String s: str) answer += s;
        
        return answer;
    }
}