본문 바로가기
알고리즘/[python] 백준 BOJ

[python] 백준 9506 약수들의 합

by Alan_Kim 2023. 3. 16.
728x90
반응형

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

 

9506번: 약수들의 합

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

www.acmicpc.net

 

문제 해결

  • 완전수의 가장 클 수 있는 약수는 n%2==0일 때 n//2
  • 따라서 1부터 n//2+1까지 for문을 통해 나눠 떨어지는 수를 찾는다.
  • 더해서 n이 나오면 완전수이다. 표현은 n,=은 각각 sep=' '로 출력하고 ' + '.join을 통해 더하기를 표현할 수 있다.
  • 아니면 N is NOT perfect. 나오도록 출력

 

CODE

import sys
input = sys.stdin.readline

while True:
    n = int(input())
    if n == -1:break
    ans = []
    for i in range(1,n//2+1):
        if n%i ==0:
            ans.append(i)
    if n == sum(ans):
        print(n,'=',' + '.join(map(str,ans)),sep=' ')
    else:
        print(n, 'is NOT perfect.', sep=' ')
728x90
반응형

'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글

[python] 백준 2810 컵홀더  (0) 2023.03.17
[python] 백준 2212 센서  (0) 2023.03.17
[python] 백준 10825 국영수  (0) 2023.03.16
[python] 백준 2812 크게 만들기  (0) 2023.03.16
[python] 백준 3109 빵집  (0) 2023.03.16

댓글