import java.util.Arrays;
import java.util.Comparator;
class Solution {
public String solution(int[] numbers) {
StringBuilder sb = new StringBuilder();
//int[] -> String[]
String[] strArr = new String[numbers.length];
for(int i=0; i<numbers.length; i++) {
strArr[i] = String.valueOf(numbers[i]);
}//for end
//정렬 방식 지정
//두 문자열 붙였을 때 값을 비교해서 내림차순 정렬
Arrays.sort(strArr, new Comparator<String>() {
@Override
public int compare(String str1, String str2) {
String temp1 = str1+str2;
String temp2 = str2+str1;
return temp2.compareTo(temp1); //내림차순
//temp1.compareTo(temp2); 오름차순
}
});
if(strArr[0].equals("0")) {
//모든 숫자가 0인 경우
//"00000.."이 아닌 "0"으로 출력
sb.append("0");
} else {
for(String string : strArr) {
sb.append(string);
}//for end
}//if~else end
return sb.toString();
}
}
일반적인 String 내림차순 정렬에서는 "300" "3" 순으로 정렬되지만,
여기서는 "3" "300" 순으로 정렬되어야 한다.
따라서 새로운 기준으로 정렬하게 끔 comparator 작성해준다.
**
Comparator/Comparable 오름차순, 내림차순
String.valueOf(int) vs toString()
'자료구조 & 알고리즘 > 문제풀이' 카테고리의 다른 글
체육복 - 프로그래머스 (Java, Level 2) (0) | 2022.02.18 |
---|---|
카펫 - 프로그래머스 (Java, Level 2) (0) | 2022.02.10 |
K번째 수 - 프로그래머스 (Java, Level 1) (0) | 2022.02.09 |
이중우선순위큐 - 프로그래머스 (Java, Level 3) (0) | 2022.02.09 |
더 맵게 - 프로그래머스 (Java, Level 2) (0) | 2022.02.09 |
댓글