입력값의 제한이 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 |