문제
요약
N개의 숫자가 주어지면, 해당 숫자들을 나열하여 만들 수 있는 수들 중 가장 큰 수를 구하여라
분류
- 그리디
- 정렬
풀이
1. 내 풀이 (그리디 + 정렬)
이전에 어떤 코드트리 문제를 풀다가 마주한 아이디어가 있다. 숫자의 대소를 비교할 때, 전체 자리수에 상관없이 큰 자리수부터 비교하고 싶다면 a+b 와 b+a 의 대소를 비교하면 된다는 것이다. 해당 아이디어가 이 문제를 푸는 데 유효했다.
n = int(input())
arr = list(input().split())
m = 0
for a in arr:
m = max(m, len(a))
arr.sort(key=lambda x: x * m, reverse=True)
print(int("".join(arr)))
숏코딩
i=input;i();print(int("".join(sorted(i().split(),key=lambda x:x*10)[::-1])))