Hello Computer Vision

백준 알고리즘 9506번 [약수들의 합] 파이썬 본문

백준알고리즘/수학

백준 알고리즘 9506번 [약수들의 합] 파이썬

지웅쓰 2023. 4. 18. 10:41

https://www.acmicpc.net/problem/9506

 

9506번: 약수들의 합

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

www.acmicpc.net

엄청 어려운 문제는 아니었다. while 문으로 input을 받고 for문으로 그리디하게 약수를 찾은 후 이러한 약수들을 리스트에 넘겨주었다. 그리고 문제에 대한 조건인 이 약수들의 합이 만약 자기자신이랑 같을 때 이를 완전수라고 하는데, 따라서 for문을 돌릴 때 자기자신을 포함하지 않았다. 완전수 일 때 이를 출력할 때는 for문을 이용해서 출력하고, 마지막 수일 때는 + 기호를 빼주는 출력을 해준다.

while True:
    n = int(input())
    if n == -1:
        break
    answer_list = []
    for i in range(1, n):
        if n % i == 0:
            answer_list.append(i)
    if sum(answer_list) == n:
        print('{} ='.format(n), end=' ')
        for j in answer_list:
            if j != answer_list[-1]:
                print('{} +'.format(j), end = ' ')
            else:
                print('{}'.format(j))

    else:
        print('{} is NOT perfect.'.format(n))