백준/약수, 배수와 소수

백준 - 9506 (python)

SooHw 2024. 2. 22. 16:11

 

 

입력값의 제한이 100,000인걸 보고 제한조건에 해당하는 완전수가 별로 없을거같아서 야매로 코드를 한번 짜봤다.

 

while True:
    arr = []
    n = int(input())
    if n == -1:
        break
    elif n == 6:
        print("6 = 1 + 2 + 3")
    elif n == 28:
        print("28 = 1 + 2 + 4 + 7 + 14")
    elif n == 496:
        print("496 = 1 + 2 + 4 + 8 + 16 + 31 + 62 + 124 + 248")
    elif n == 8128:
        print(
            "8128 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 127 + 254 + 508 + 1016 + 2032 + 4064"
        )
    else:
        print(f"{n} is NOT perfect.")

 

 

결과적으론 정답이 나왔다..

 

 

 

하지만 이러면 알고리즘 푸는 의미가 없으니 다시 풀었다

 

while True:
    arr = []
    n = int(input())
    if n == -1:
        break
    for i in range(1, n):
        if n % i == 0:
            arr.append(i)
    total_sum = sum(arr)
    if n == total_sum:
        print(n, "=", " + ".join(map(str, arr)))
    else:
        print(f"{n} is NOT perfect.")

 

약수들의 합을 담아놓은 배열 (n 제외)의 합과 n이 맞을경우 print

join함수를 통해 간결하게 코드를 구성해봤다.

'백준 > 약수, 배수와 소수' 카테고리의 다른 글

백준 - 11653 (python)  (0) 2024.02.29
백준 - 2581 (python)  (0) 2024.02.27
백준 - 1978 (python)  (0) 2024.02.26
백준 - 2501 (python)  (0) 2024.02.22
백준 - 5086 (python)  (0) 2024.02.21