프로그래머스 정렬(Array)의 두번째 문제
가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수
package programmkit;
import java.util.Arrays;
import java.util.Comparator;
/* 가장 큰 수
* 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수
*/
public class Array_2 {
public static void main(String[] args) {
int numbers[] = {3,30,34,5,9};
String answer = solution(numbers);
System.out.println(answer);
}
private static String solution(int[] numbers) {
//int배열 >String배열로 변환
String numberST[] = new String[numbers.length];
for(int x=0; x<numbers.length; x++) {
numberST[x] = String.valueOf(numbers[x]);
}
//int + "" 형식으로 int>String 하는건 효율 매우 안좋다.
//String.valueof() 쓸 것!
// Arrays.sort(numberST, new Comparator<String>() {
//comparator : 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때
// @Override
// public int compare(String o1, String o2) {
// return (o2+o1).compareTo(o1+o2);
// }
// });
Arrays.sort(numberST, (o1,o2)->(o2+o1).compareTo(o1+o2));
if(numberST[0].equals("0"))
return "0";
// String answer = "";
// for(int x=0; x<numberST.length; x++) {
// answer += numberST[x];
// }
// return answer;
StringBuffer sb = new StringBuffer();
for(int x=0; x<numberST.length; x++) {
sb.append(numberST[x]);
}
return sb.toString();
}
}
1. int 배열을 String으로 바꿔야 한다.
보통 int를 String으로 바꿀 때 int+"" 방식을 많이 쓰는데 효율이 매우 안좋다!
String.valueof() 쓸 것
2. 2개를 더하여 더 큰 쪽이 우선순위에 있도록 정렬
Arrays.sort에서 Comparator를 쓰는 방법
Comparator : 기본 정렬 기준 외에 다른 기준으로 정렬하고자 할 때 쓴다!
3. 0으로만 구성된 경우는 0 return
4. 그 외는 연결해서 answer return
나는 StringBuffer 써서 toString으로 바꿈
그냥 String으로 이어붙여도 ok
P.S
Comparator를 새로 배웠다.
Arrays.sort 의 무궁무진함..또르륽
[출처] 빡쏘끼룩
'IT > JAVA' 카테고리의 다른 글
[프로그래머스] 정렬(Array)_3_H-Index (0) | 2020.12.18 |
---|---|
[프로그래머스] 정렬(Array)_1_K번째 수 (0) | 2020.12.16 |
[Java] JDBC 연결 순서 완벽정리 (0) | 2020.12.15 |
[Java] Thread (0) | 2020.12.14 |
[Java] I/O 3(입출력) (java.io) - NotePad 만들기 (0) | 2020.11.13 |