BAEKJOON (Python)/단계별

BAEKJOON_9506 "약수들의 합" PYTHON

RiLLa_0511 2023. 3. 2. 10:07
728x90

[백준] 9506번 Python 파이썬

 

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

 

9506번: 약수들의 합

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

www.acmicpc.net

c = []
while True:
    a = int(input())
    for i in range(1, a): # a는 약수에 포함되지 않아야 하므로 범위를 1부터 a-1로 정해준다.
        if a % i == 0: # 빈 리스트 c에 a의 약수들을 대입한다.
            c.append(i) 
    if a == -1: # 입력이 -1일 경우, 실행을 종료한다.
        break
    if sum(c) == a: # 자기 자신을 제외한 a의 약수들의 합이 a와 같다면 10번째 줄과 같이 출력한다.
        print(a, ' = ', ' + '.join(str(i) for i in c), sep = '')
        c = []
    else: 
        print(a, 'is NOT perfect.')
        c = []

완전수를 출력할 때, sep = ''을 쓰지 않아서 '출력 형식이 잘못되었습니다'가 떴다.