(Python, Java) 프로그래머스 - 가장 큰 수
in Algorithm on Programmers, Level2
[문제 링크]
Python 풀이
def solution(numbers):
class Predicate(str):
def __lt__(self, other):
return self + other < other + self # 오름차순 -> 작은 것을 앞쪽에
result = ''.join(sorted(map(str, numbers), key=Predicate, reverse=True)) # 내림차순으로 정렬
return "0" if result[0] == "0" else result
Java 풀이
class Solution {
public String solution(int[] numbers) {
List<String> arr = new ArrayList<>();
for (int number : numbers) {
arr.add(String.valueOf(number));
}
arr.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o2 + o1).compareTo(o1 + o2);
}
});
StringBuilder sb = new StringBuilder();
for (String s : arr) {
sb.append(s);
}
String answer = sb.toString();
if (answer.charAt(0) == '0')
return "0";
return answer;
}
}
두 숫자를 문자로 더해서 큰 경우를 우선적으로 정렬하는 방식이다.