Post

[프로그래머스/LV2] 가장 큰 수 - 문자열 람다 정렬 (Java)

프로그래머스 LV2 가장 큰 수기 문제를 Java로 해결한 풀이입니다. 문자열 lambda 정렬을 활용해 내림차순정렬을 만드는 방법으로 설명합니다.

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

🙋‍♂️ 들어가며

이 문제는 문자열 람다정렬을 알아야 한다. 큰 수를 만들기 위해 문자열인 상태에서 a+b, b+a 했을때, 더 크게 만들 수 있다면 그 수를 앞으로 보낸다. 그러기 위해서는 다음과 같은 코드가 필요하다

1
Arrays.sort(arr, (a,b) -> (b+a).compareTo(a+b) );

그리고 numbers의 원소가 0 <= numbers <= 1000 이기 때문에 예외 처리도 필요하다 "0"일때 "0" 반환


✅ 정답 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Arrays;

class Solution {
    public String solution(int[] numbers) {
        int N = numbers.length;
        String[] arr = new String[N];
        for (int i = 0; i < N; i++) {
            arr[i] = String.valueOf(numbers[i]);
        }
        
        // 1. String (x, y)를 비교하여 둘다 합쳤을떄 더 큰수면 내림차순 정렬
        Arrays.sort(arr, (a,b) -> (b+a).compareTo(a+b) );
        
        // 2. 예외처리 0일 경우
        if (arr[0].equals("0")) {
            return "0";
        }
        
        // 3. 합치기
        String answer = "";
        for (int i = 0; i < N; i++) {
            answer +=  arr[i];
        }
        
        // 4. 반환
        return answer;
    }
}
This post is licensed under CC BY 4.0 by the author.

Trending Tags