public static String solution(int[] numbers) {
StringBuilder answer = new StringBuilder();
String[] strNumbers = new String[numbers.length];
// 단순 메소드 호출, lambda 변환
Arrays.setAll(strNumbers, i -> String.valueOf(numbers[i]));
// 단순 오버라이딩, lambda 변환
Arrays.sort(strNumbers, (o1, o2) -> (o2+o1).compareTo(o1+o2));
if (!strNumbers[0].startsWith("0")) {
for (String strNumber : strNumbers) {
answer.append(str_number);
}
} else {
answer.append("0");
}
return answer.toString();
}
문자열 비교정렬에 대해 공부하고 어렵지 않게 풀 수 있었다
다른 사람들 코드를 보니 자릿수 맞추어 풀기 그런걸 했던데 어떻게 그런 풀이방법이 생각나는지 좀 부럽다...
stream 사용
primitve for loop 사용
처음에 for loop를 이용해서 작성했다가 단순 객체 감싸기면 Stream으로 빠르게 끝낼 수 있지않을까 싶어 Stream을 적용했는데 오히려 느리게 나왔다.
이에 관해 primitive type의 경우 일반적 for loop가 더 빠르기에 stream 사용에 유의해야한다는 글을 본 것 같았고, 검색해서 찾았다.
Stream 반복문 테스트와 그 결과
for loop를 for each로 바꾸지 말아야할 3가지 이유