프로그래머스 알고리즘 (java)
가장 큰 수
내가 작성한 코드
문자열로 변환하고 sort 해서 다 더해 출력함
다른 사람들도 비슷한 방식으로 푼거 같다.
public String solution(int[] numbers) {
String answer = "";
List<String> stringList = new ArrayList<>();
for (int anInt : numbers) {
stringList.add(String.valueOf(anInt));
}
stringList.sort(((o1, o2) -> (o2 + o1).compareTo(o1 + o2)));
for (String s : stringList) {
answer += s;
}
return answer.charAt(0) == '0'? "0": answer;
}
- compareTo 하는것이 어려웠다.
- {20,3} 을 비교하면 20이 3보다 크지만 (o2 + o1).compareTo(o1+o2) 로 비교하면 "320" 이 "203" 보다 크니 3, 20으로 정렬됨
- 마지막 테스트 케이스에서 막혔다. 마지막은 배열에 0 밖에 없었다.
- 0을 출력해보니 000 같이 나왔는데 이걸 0 으로 바꾸는 조건을 추가해 해결