import sys
readl = sys.stdin.readline
def f():
while True:
n = int(readl())
if n < 0:
break
# 약수들을 구한다 (소인수 분해가 아니다)
divisors = ["1"]
# 약수들의 합을 구한다
summ = 1
for i in range(2, (n >> 1) + 1):
if n % i == 0:
divisors.append(str(i))
summ += i
# 출력
if summ == n:
print(f'{n} = {" + ".join(divisors)}')
else:
print(f"{n} is NOT perfect.")
f()
Problem link
https://www.acmicpc.net/problem/9506
Problem abstraction
Design(Plan) algorithm
Algorithm idea
Pseudo-code
Validate algorithm
Impl
Self-feedback
구조적 접근: 문제를 추상화하여 구조적으로 접근했는가?
사고력: 알고리즘을 완전히 이해했는가? (충분한 사고력을 가졌는가?)
구현력: 알고리즘을 신속, 정확하게 구현했는가?