import java.util.Arrays;
import java.util.Comparator;
class Solution {
public String solution(int[] numbers) {
String answer = "";
String[] temp = new String[numbers.length];
for(int i=0; i< numbers.length; i++){
temp[i] = Integer.toString(numbers[i]);
}
//temp 내림차순으로 정렬.
Arrays.sort(temp, new Comparator<String>(){
@Override
public int compare(String s1 , String s2){
return (s2 + s1).compareTo(s1 + s2);
}
});
if(temp[0].equals("0")) //ex) 0000인 경우! 이런 경우 0으로 종료!
return "0";
for(int i=0; i< temp.length; i++){
answer+=temp[i];
}
return answer;
}
}
* compareTo
- 맨 첫자리부터 차례대로 비교하는 메소드이다!
- 차이의 길이를 리턴하게 되는데,
예를 들어, abc와 abcddd를 compareTo 하게 되면 -3을 리턴!
테스트 케이스에 3 이랑 30 이 input으로 있는데
330 이 되어야 하는데 303이 되어서 이걸 우쩌나 싶었다 ;-;
이런 경우 때문에
문자열 두 개를 붙여서 비교해준다. !
예를 들어 330이랑 303이랑 비교해서 더 큰 거 리턴 ~
내림차순이라서 (s2+s1).compareTo(s1+s2); 가 된다.
오름차순이라면 (s1+s2).compareTo(s2+s1) 하면 되겠쥬~? -> 이렇게 하면,, 가장 작은 수 ,, 겠지?!?
'NOTE > 프로그래머스' 카테고리의 다른 글
Level2 - 다음 큰 숫자 (0) | 2022.03.14 |
---|---|
Level2 - 문자열 압축 (0) | 2022.03.14 |
22.01.08 - (2) (0) | 2022.01.08 |
22.01.08 (0) | 2022.01.08 |
21.09.21 (0) | 2021.09.21 |