[BOJ] 9506 | 약수들의 합

Gaanii·2024년 10월 15일
1

Problem Solving

목록 보기
30/210
post-thumbnail

아래 백준 로고를 클릭하면 해당 문제로 이동합니다 😀

BOJ 로고



풀이과정


일단 for문을 range(1, n // 2 + 1)로 설정해서 N을 나눴을 때 나머지가 없는 수만 리스트에 저장한다. n//2 + 1로 해준 이유는 어차피 약수는 n//2보다 큰 수가 없기 때문이다.

그리고 리스트 안에 요소를 다 더했을때 n과 같다면 리스트의 요소를 출력하게 했고, 그게 아닌경우는 is NOT perfect를 출력한다.

📢 참고 : print(*arr) : arr 리스트 요소 한번에 출력


코드


import sys

while True:
    n = int(sys.stdin.readline())

    if n == -1:
        break

    divisor = []

    for i in range(1, n // 2 + 1):
        if n % i == 0:
            divisor.append(i)

    if sum(divisor) == n:
        print(n, '=', end = ' ')
        print(*divisor, sep = ' + ')
    else:
        print(n, 'is NOT perfect.')


결과


정답

0개의 댓글