문자열 비교
문자열 비교 알고리즘이다.
ArrayList에 담아서 비교하는데 두 숫자를 하나씩 앞으로 보내서 붙여서 둘 중에 더 큰 숫자를 앞으로 보낸다.
[예제]
a=3, b=30 이라면,
330 과 303을 비교해서 330이 더 크다면 3을 앞으로 보내줘야 한다.
Java의 Collection.sort()를 이용하여 람다식을 사용해서 풀어보자.
정렬이 끝나고 첫 문자가 0으로 시작된다면 0을 바로 리턴해준다. 00이 나올 수도 있기 때문이다.
0이 아니라면 순서대로 answer에 담아서 리턴해준다.
import java.util.*;
class Solution {
public String solution(int[] numbers) {
StringBuilder answer = new StringBuilder();
ArrayList<String> fourWord = new ArrayList<>();
// 숫자를 문자열로 바꿔서 ArrayList에 담아준다.
for (int i = 0; i < numbers.length; i++) {
fourWord.add(String.valueOf(numbers[i]));
}
// Collection sort를 이용하여 람다식을 이용해서 ab와 ba 문자열 중에 더큰 문자열을 앞으로 보낸다.
Collections.sort(fourWord, (a, b) -> (b + a).compareTo(a + b));
if (fourWord.get(0).startsWith("0")) {
return "0";
}
for (String s : fourWord) {
answer.append(s);
}
return answer.toString();
}
}