Programmers/Level2

가장 큰 수

zzunsik 2021. 7. 13. 03:08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
class Solution {
    public String solution(int[] numbers) {
        String answer = "";
        // numbers 배열을 String 배열로 변환
        String[] tmp = Arrays.stream(numbers).mapToObj(String::valueOf).toArray(String[]::new);
        
        // 앞 뒤 숫자를 연결해서 큰 부분이 앞에 오도록 설정
        Arrays.sort(tmp, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return (o2 + o1).compareTo(o1 + o2);
            }
        });
        if(tmp[0].equals("0"))
            answer = "0";
        else
            answer = String.join("", tmp);
        return answer;
    }
}
cs

주어진 수들의 조합으로 가장 큰 수를 만드는 문제이다.

 

정렬을 어떻게 하는지가 가장 중요한데 단순한 오름차순, 내림차순으로는 문제를 해결할 수 없다.

사용자가 원하는 형태로 비교해서 정렬할 수 있는 Comparator를 이용하여 해결하였다.