n = int(input())
serial = []
for _ in range(n):
serial.append(input())
for i in range(n-1):
for j in range(i+1, n):
# 짧은 것 먼저
if len(serial[i]) > len(serial[j]):
serial[i], serial[j] = serial[j], serial[i]
elif len(serial[i]) == len(serial[j]):
suma = 0
sumb = 0
for x, y in zip(serial[i], serial[j]):
if x.isdigit():
suma += int(x)
if y.isdigit():
sumb += int(y)
if suma > sumb:
serial[i], serial[j] = serial[j], serial[i]
elif suma == sumb:
for x, y in zip(serial[i], serial[j]):
if x > y:
serial[i], serial[j] = serial[j], serial[i]
break
elif x < y:
break
for i in serial:
print(i)
위 소스코드는 zip 함수를 사용하는데, 이는 각 배열에 대해 병렬 처리를 할 수 있도록 도와준다.
아래는 zip 함수의 예제이다.
numbers = [1, 2, 3]
letters = ["A", "B", "C"]
for pair in zip(numbers, letters):
print(pair)
위 소스 코드의 실행결과는 아래와 같다.
(1, 'A')
(2, 'B')
(3, 'C')