문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/42746
제한 사항
입출력 예
풀이
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution {
public String solution(int[] numbers) {
return Arrays.stream(numbers)
.boxed()
.sorted((a, b) -> {
String strA = String.valueOf(a) + String.valueOf(b);
String strB = String.valueOf(b) + String.valueOf(a);
return strB.compareTo(strA);
})
.map(String::valueOf)
.collect(Collectors.joining())
.replaceFirst("^00*0$", "0");
}
}
후기
숫자를 문자로 바꿔서 제일 큰 수로 반환하는 문제이다. 그냥 앞 자리가 큰 수대로 정렬하면 그 뒤의 자리에서 또 비교를 해야 하는 문제가 있어서 그냥 비교하면 복잡해진다. 그래서 문자를 사전형으로 비교하도록 compareTo()를 이용해서 정렬을 시키면 된다.
마지막 replace를 해주는 부분은 만약 0000이면 그냥 0이므로 이 처리를 해주기 위해서 정규표현식을 이용했다.
이 부분을 고려하지 않으면 11번이 틀렸다고 나온다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
[프로그래머스][Java][Lv. 3] 스티커 모으기(2) (0) | 2024.09.18 |
---|---|
[프로그래머스][Java][Lv. 3] 베스트앨범 (1) | 2024.09.16 |
[프로그래머스][Java][Lv. 3] 기지국 설치 (1) | 2024.09.13 |
[프로그래머스][Java][Lv. 3] 최고의 집합 (0) | 2024.09.11 |
[프로그래머스][Java][Lv. 3] 단속카메라 (0) | 2024.09.10 |