[프로그래머스/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.
