음이 아닌 정수가 N개 들어있는 리스트가 주어졌을 때, 리스트에 포함된 수를 나열하여 만들 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
음이 아닌 정수가 N개 들어있는 리스트가 주어졌을 때, 리스트에 포함된 수를 나열하여 만들 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.
리스트에 포함된 수를 나열하여 만들 수 있는 가장 큰 수를 출력한다. 수는 0으로 시작하면 안되며, 0이 정답인 경우 0 하나를 출력해야 한다.
입력 1
5
3 30 34 5 9
출력 1
9534330
입력 2
5
0 0 0 0 1
출력 2
10000
import sys
read = sys.stdin.readline
def masking(num):
l = len(num)
return num + (9 - l) * "0", l
if __name__ == "__main__":
N = int(read())
nums = list(map(masking, read().split()))
nums = sorted(nums, key=lambda n: int(n[0]), reverse=True)
ans = ""
for value, length in nums:
ans = max(ans + value[:length], value[:length] + ans)
print(int(ans))
"""
3
98 9 981
998981
"""
"""
2
32 3
332
"""
"""
2
34 3
343
"""
"""
3
123 12 3
312312
"""
"""
2
21 2122
212221
"""
"""
2
12 1211
121211
"""
"""
3
1211 12 12111
12121112111
"""
"""
3
21 2122 21222
21222212221
"""
"""
2
1221 12211
122112211
"""
from functools import cmp_to_key
input()
arr = sorted(
input().split(), key=cmp_to_key(lambda a, b: 1 if int(a + b) < int(b + a) else -1)
)
print(int("".join(arr)))