문제
https://www.acmicpc.net/problem/9506
문제 해석
입력
한 줄에 하나씩 정수가 입력되고 -1이 입력되면 프로그램을 종료한다.
출력
입력받은 수가 '완전수'라면 "{n} = {n의 약수} + {n의 약수} ... {n의 약수}"를 출력한다.
'완전수'가 아니라면 "{n} is NOT perfect." 를 출력한다.
완전수란 자기 자신을 제외한 모든 약수의 합과 자기 자신이 같은 수를 말한다.
풀이
1번 풀이
n이 i로 나누어 떨어지는지 확인하고 나누어 떨어진다면 약수 배열에 추가한다.
1부터 n-1 까지 반복한다.
약수 배열의 합과 n이 같다면 완전수로 출력한다.
아니라면 완전수가 아님을 출력한다.
-1이 입력될 때까지 반복한다.
while True:
n = int(input())
divisor = []
if n == -1: break
else:
for i in range(1, n):
if n % i == 0:
divisor.append(i)
if sum(divisor) == n:
print(f'{n} = 1', end='')
for i in divisor[1:]:
print(' +', i, end='')
print()
else:
print(f'{n} is NOT perfect.')
'Algorithm Study' 카테고리의 다른 글
백준 1874번 스택 수열 (0) | 2024.02.18 |
---|---|
귀엽게 생긴 GO랭을 써보자 (0) | 2024.02.18 |
백준 27433번 팩토리얼 2 - Python (0) | 2024.02.18 |
백준 28215번 대피소 - Python (0) | 2024.02.18 |
백준 28214번 크림빵 - Python (0) | 2024.02.18 |
댓글