https://www.acmicpc.net/problem/1431
다음 세 가지 조건으로 정렬을 합니다.
1. 시리얼의 길이
2. 자리수의 합
3. 사전 순
다중 조건으로 정렬을 하기 위해서는
sorted의 key를 통해 커스터마이징을 할 줄 알아야 합니다. (lambda도 사용할 줄 알아야합니다.)
key=lambda x: (조건1, 조건2, 조건3) 과 같이 사용하면 왼쪽부터 조건으로 잡고 정렬을 해줍니다.
조건 1 = len(x) -> 시리얼의 길이를 return
조건 2 = sum_of_digits(x) -> 새롭게 만든 함수, 시리얼에서 숫자들의 자리수 합을 return
조건 3 = x ->시리얼을 return -> 사전 순으로 비교하기 위함
from sys import stdin
input = stdin.readline
def sum_of_digits(x):
count = 0
for ii in x:
if ii.isdigit():
count += int(ii)
return count
n = int(input())
serial = []
for _ in range(n):
serial.append(input().rstrip())
serial.sort(key=lambda x: (len(x), sum_of_digits(x), x))
for ss in serial:
print(ss)