https://www.acmicpc.net/problem/1431
N = int(input())
G_list = []
for _ in range(N):
G = list(input())
sum_num = 0 # 숫자의 합을 기록
for g in G:
if g.isdigit(): # 문자가 숫자인지 아닌지 판별해줌
sum_num+= int(g)
G_list.append( (''.join(G),len(G),sum_num ) )
G_list.sort(key=lambda x:(x[1],x[2],x[0])) # 조건대로 정렬
for i in G_list:
print(i[0])
문자와 문자의 길이, 문자 내부의 자리수의 합을 리스트에 넣고 정렬해준다.
isdigit()
라는 메소드에 대해 알게되었다.
string 클래스의 메소드로 문자가 모두 숫자이면 True를 반환, 하나라도 문자가 포함되어있으면 False를 반환한다.
또한, 0을 포함하는 양의 정수에 한해서만 판별 가능하다.