[백준] 9506: 약수들의 합 - 파이썬[python]

다인·2024년 8월 19일

백준

목록 보기
37/112
post-thumbnail

문제 자체는 어렵지 않다. 그런데 print문을 작성하는 여러 가지 방법이 있어서 정리해본당

코드

n = int(input())

while n != -1:
    aliquot = []
    for i in range(1, n//2 + 1):
        if n % i == 0:
            aliquot.append(i)

    if sum(aliquot) == n:
        print(n, "=", end=' ')
        print(*aliquot, sep=' + ')aliquot))
    else:
        print(n, "is NOT perfect.")

    n = int(input())

print문

join은 리스트의 요소들을 합쳐서 문자열로 만드는 함수이므로 aliquot에 들어있는 int형 요소들을 string으로 바꾸어주는 과정이 필요하다!

1. * 사용

print(n, "=", end=' ')
print(*aliquot, sep=' + ')

2. join + map 사용

print(n, "=", " + ".join(map(str, aliquot)))

3. join + for문 사용

print(n, "=", " + ".join(str(i) for i in aliquot))

결과

아래서부터 1~3 코드이다. for문이 더 오래 걸리는 게 아니라 map이 더 오래 걸리네.
GPT한테 물어보니까 짧은 코드에서는 map이 더 느릴 수 있단다.

0개의 댓글