티스토리 뷰
📌문제
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.
예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다.
n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
📌풀이
1부터 n-1까지 n을 나눴을 때 0으로 나누어 떨어지는 수를 찾아서 nums 리스트에 추가
만약 nums 리스트의 합이 n이라면(완전수) 주어진 형식대로 출력
nums 리스트의 각 요소를 문자열로 바꾼 후 +로 연결(join)하여 출력
📌코드
while 1:
n = int(input())
if n == -1:
break
nums = [] # 약수 저장할 리스트
for i in range(1, n):
if n % i == 0:
nums.append(i)
if sum(nums) == n:
print(n, "=", " + ".join(map(str, nums)))
else:
print(n, "is NOT perfect.")
'코딩테스트' 카테고리의 다른 글
[백준/파이썬] 2581 소수 (0) | 2025.01.19 |
---|---|
[백준/파이썬] 1978 소수 찾기 (0) | 2025.01.17 |
[백준/파이썬] 2501 약수 구하기 (0) | 2025.01.15 |
[백준/파이썬] 5086 배수와 약수 (0) | 2025.01.14 |
백준 2292 벌집/파이썬 (0) | 2025.01.12 |