본문 바로가기

Programmers/Level2

가장 큰 수

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를 이용하여 해결하였다.

'Programmers > Level2' 카테고리의 다른 글

게임 맵 최단거리  (0) 2021.07.14
오픈채팅방  (0) 2021.07.14
더 맵게  (0) 2021.07.12
타겟 넘버  (0) 2021.07.12
카카오프렌즈 컬러링북  (0) 2021.07.11