백준(Python) 풀이/수학

백준(Python) 9506번 약수들의 합 풀이

개발윗미 2021. 10. 20. 10:25

Python으로 구현한 9506번 약수들의 합 문제 풀이입니다.

 

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

 

9506번: 약수들의 합

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

www.acmicpc.net


while True :
  n = int(input())
  if n == -1 :
    break
  number = 2
  data = [1]

  for i in range(2, n) :
    if n % i == 0 :
      data.append(i)

  result = str(n) + " = 1" 
  if n == sum(data) :
    for j in range(1, len(data)) :
      result += " + " + str(data[j])

    print(result)
  else :
    print(str(n) + " is NOT perfect.")

 

반복문을 통해 입력받은 수의 약수를 구해 data 리스트에 담는다. 약수를 구한 작업이 끝나면 조건문을 통해

 

입력받은 수와 data 리스트에 담겨있는 수들의 합이 같다면 완전수이기 때문에 문제에서 요구하는 출력 형식에 

 

맞게 data 리스트에서 값을 하나씩 꺼내와 출력하도록 하고, 그렇지 않다면 str(n) + " is NOT perfect." 와 같이 출력한다.