자기개발👨‍💻/코딩 알고리즘

[python] 백준 9506 약수들의 합

천숭이 2021. 1. 2. 02:28

www.acmicpc.net/problem/9506

 

9506번: 약수들의 합

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.  예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

www.acmicpc.net

numbers=[]
while(1):
    numbers.append(int(input()))
    if numbers[-1]==-1: break

numbers=numbers[:-1]
        
for number in numbers:
    tmp=[]
    i=1
    while(i<number):
        if number%i==0:
            tmp.append(i)
        i+=1
    if sum(tmp)==number: 
        print(number,end=" = ")
        for k in range(len(tmp)):
            if k<len(tmp)-1:
                print(tmp[k],end=" + ")
            else:
                print(tmp[k])
    else:
        print(number,"is NOT perfect.")

입력은 -1이 들어올때까지 입력받는다

출력은 완전수일 경우 약수들 사이에 "+" 를 넣어 알맞게 출력

완전수가 아닐 경우 "is NOT perfect"를 출력

이 문제는 약수를 구하는 것보다 출력문에 더 신경써야 하는 문제같다.