[백준] 1431 (실버3)

zunzero·2022년 8월 14일
0

알고리즘(파이썬)

목록 보기
16/54


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')
profile
나만 읽을 수 있는 블로그

0개의 댓글