
[3, 30, 34, 5, 9] 정렬 -> [9, 5, 34, 3, 30] -> "9534330"
우선 3이랑 30 같은 경우를 어떻게 처리해야 할지 난감했다.
그러다 "아! 2개씩 붙여서 수를 만들어서 정렬할까?" 라 생각함
//두 수를 붙인 후 비교 -> 정렬
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] arr = new String[numbers.length];
//numbers를 string으로 변환
for(int i=0; i<numbers.length; i++) {
arr[i] = Integer.toString(numbers[i]);
}
//두 수를 붙이고 비교하였을 때, 큰 수를 앞으로 오도록 배치
Arrays.sort(arr, (o1,o2) -> ((o2+o1).compareTo(o1+o2)));
for(String s:arr) {
answer += s;
}
return answer;
}
}
잠깐 하나 왜 통과 못하는데? 93.3 뭔데;;
numbers의 수가 모두 0일때는 "0"을 반환하면 되므로 이러한 조건 추가
-> 효율성 up!
//두 수를 붙인 후 비교 -> 정렬
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] arr = new String[numbers.length];
//numbers를 string으로 변환
for(int i=0; i<numbers.length; i++) {
arr[i] = Integer.toString(numbers[i]);
}
//두 수를 붙이고 비교하였을 때, 큰 수를 앞으로 오도록 배치
Arrays.sort(arr, (o1,o2) -> ((o2+o1).compareTo(o1+o2)));
//효율성을 높이기 위해 0일때 처리
//정렬 후 첫번째 수가 0일 때 (= 모든 수가 0일 때) 0으로 처리
if(arr[0].equals("0")) {
return "0";
}
for(String s:arr) {
answer += s;
}
return answer;
}
}
정렬하는 방법 까먹었었다 미취겠네