※. 비교하기 쉽게 숫자 배열 -> 문자 배열
※. 배열 원소끼리 더한(s1+s2, s2+s1)것을 비교해준다.
(Arrays.sort 사용)
※. 정렬한 원소들을 합쳤을 때 '0'으로 시작한다면 "0"을 반환해준다.
( 000000 이 올 수 있음)
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] copy = new String[numbers.length];
for(int i = 0; i < numbers.length; i++) {
copy[i] = String.valueOf(numbers[i]);
}
Arrays.sort(copy, new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
return (o1+o2).compareTo(o2+o1);
}
});
String answer = "";
for(int i = copy.length-1; i >= 0; i--) {
answer += copy[i];
}
if(answer.startsWith("0")) return "0";
return answer;
}
}
※. Arrays.sort 람다식
1. sort의 메소드는 Comparator메소드 하나밖에 없다. (생략가능)
2.Comparator 에는 compare 메소드 하나밖에 없다. (생략가능)
3. 정렬할 배열에는 String이 들어있기 때문에 String만 들어올 수 있다. (String 생략가능)
4. 리턴할 값을 구현한 게 한 줄 밖에 안되기 때문에 return 생략
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String[] copy = new String[numbers.length];
for(int i = 0; i < numbers.length; i++) {
copy[i] = String.valueOf(numbers[i]);
}
Arrays.sort(copy, (s1, s2) -> (s1+s2).compareTo(s2+s1));
String answer = "";
for(int i = copy.length-1; i >= 0; i--) {
answer += copy[i];
}
if(answer.startsWith("0")) return "0";
return answer;
}
}
https://dev-kani.tistory.com/32
https://codechacha.com/ko/java8-stream-collect/
import java.util.*;
import java.util.stream.*;
class Solution {
public String solution(int[] numbers) {
String answer = IntStream.of(numbers)
.mapToObj(n -> String.valueOf(n))
.sorted((s1, s2) -> (s2+s1).compareTo(s1+s2))
.collect(Collectors.joining());
if(answer.startsWith("0")) return "0";
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스 Level 4] 올바른 괄호의 갯수 [자바] (0) | 2022.11.15 |
---|---|
[프로그래머스 Level 2] 게임 맵 최단거리 [자바] (0) | 2022.11.15 |
[프로그래머스 Level 3] 기지국 설치 [Java] (0) | 2022.11.01 |
[프로그래머스 Level 2] k진수에서 소수 개수 구하기 [Java] (0) | 2022.10.08 |
[프로그래머스 Level 2] 전화번호 목록 [Java] (0) | 2022.10.05 |