https://school.programmers.co.kr/learn/courses/30/lessons/72411
문제 해석이 가장 중요한 관건이였다. 문제를 보자마자 DFS가 먼저 떠오른걸 보면, 아직 나는 훈련이 많이 필요하다는 것을 깨달을 수 있었다.
- int[] 배열을 String[]배열로 바꿔준다.
- 두 숫자를 이어 보고, 순서를 바꿔서 이어본 후 더 큰 수를 선택하는 것이다.
6, 10일때 610 / 106중 더 큰걸 선택하여 앞으로 오게 하면 된다.Arrays.sort(newNumbers, (o1, o2) -> (o2+o1).compareTo(o1+o2));
- 원소가 0으로만 구성되어 나올 수 있기 때문에 0000~인 경우는 0으로 return하게 만든다.
- String.join()을 통해 문자열 배열을 하나의 문자열로 반환한다.
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String newNumbers[] = Arrays.stream(numbers)
.mapToObj(String::valueOf)
.toArray(String[]::new);
Arrays.sort(newNumbers, (o1, o2) -> (o2+o1).compareTo(o1+o2));
if(newNumbers[0].equals("0")){
return "0";
}
return String.join("", newNumbers);
}
}