백준 9506번 약수들의 합

    문제

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


    문제 해석

    입력

    한 줄에 하나씩 정수가 입력되고 -1이 입력되면 프로그램을 종료한다.

    출력

    입력받은 수가 '완전수'라면 "{n} = {n의 약수} + {n의 약수} ... {n의 약수}"를 출력한다.
    '완전수'가 아니라면 "{n} is NOT perfect." 를 출력한다.
    완전수란 자기 자신을 제외한 모든 약수의 합과 자기 자신이 같은 수를 말한다.


    풀이

    1번 풀이

    n이 i로 나누어 떨어지는지 확인하고 나누어 떨어진다면 약수 배열에 추가한다.
    1부터 n-1 까지 반복한다.
    약수 배열의 합과 n이 같다면 완전수로 출력한다.
    아니라면 완전수가 아님을 출력한다.
    -1이 입력될 때까지 반복한다.

    while True:
        n = int(input())
        divisor = []
        if n == -1: break
        else:
            for i in range(1, n):
                if n % i == 0:
                    divisor.append(i)
            if sum(divisor) == n:
                print(f'{n} = 1', end='')
                for i in divisor[1:]:
                    print(' +', i, end='')
                print()
            else:
                print(f'{n} is NOT perfect.')

    'Algorithm Study' 카테고리의 다른 글

    백준 1874번 스택 수열  (0) 2024.02.18
    귀엽게 생긴 GO랭을 써보자  (0) 2024.02.18
    백준 27433번 팩토리얼 2 - Python  (0) 2024.02.18
    백준 28215번 대피소 - Python  (0) 2024.02.18
    백준 28214번 크림빵 - Python  (0) 2024.02.18

    댓글