
-Code
import java.util.*;
class Solution {
public String solution(int[] numbers) {
// 문자열의 합으로 최대를 정하기 때문에 문자열 배열로 변경
String[] numStrs = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
numStrs[i] = String.valueOf(numbers[i]);
}
// 숫자 문자열 2개의 합을 비교해 정렬
Arrays.sort(numStrs, (o1, o2) -> {
return (o2 + o1).compareTo(o1 + o2);
});
// 처음이 0인 경우 000과 같이 나올경우 1개만 출력
if (numStrs[0].equals("0")) {
return "0";
}
// 첫번째 값이 0이 아니면 10이상이므로 상관없음
StringBuilder answer = new StringBuilder();
for (String num : numStrs) {
answer.append(num);
}
return answer.toString();
}
}
처음 정렬을 숫자를 문자열로 바꾸어 길이가 길면 뒤로 같으면 내림차순으로 정렬을 하였습니다. 하지만 그렇게 하면 2개의 문자열의 합이 큰 순서로 보장할 수없어서 문자열 2개의 합의 내림차순으로 정렬을 해야 했습니다. 또한 0이 처음안나 오면 10000과 같이 상관이 없지만 처음 나온 경우 000과 같은 경우가 생기기 때문에 그 부분은 모드 0 하나로 반환해야 하는 부분도 체크해야 했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 1600번 말이 되고픈 원숭이 (0) | 2026.01.05 |
|---|---|
| [백준/Java] 2206번 벽 부수고 이동하기 (0) | 2026.01.05 |
| [프로그래머스/Java] 더 맵게 (0) | 2026.01.04 |
| [프로그래머스/Java] 무인도 여행 (0) | 2026.01.04 |
| [프로그래머스/Java] 게임 맵 최단거리 (0) | 2026.01.04 |