Baekjoon/단계별로 풀어보기

[백준][9단계 약수,배수와 소수] 9506번 /약수들의 합 (파이썬/Python)

junslee 2025. 4. 8. 17:33

1. 문제 설명

2. 코드

test_cases = []

while True:
    n = int(input())
    if n == -1:
        break
    test_cases.append(n)

for n in test_cases:
    divisors = []
    for i in range(1,n):
        if n % i == 0:
            divisors.append(i)
    if sum(divisors) == n:
        print(f"{n} = {' + '.join(map(str, divisors))}")
    else:
        print(f"{n} is NOT perfect.")

3. 풀이 과정

test_cases에 테스트할 숫자들을 저장하는 리스트를 작성한다.

while True로 무한 반복문을 실행한다.

n에 정수로 입력받고, n이 -1이면 while문을 break한다.

아니면 test_cases에 append()로 추가한다.

test_cases가 완성되면 for문의 n으로 하나씩 반복한다.

빈 리스트인 divisors를 선언한 후 1부터 n까지의 range()를 반복한다.

n을 i로 나눈 나머지가 0인 약수라면 appned()로 약수 i를 추가한다.

divisors값들을 sum()으로 합한 값이 n과 같다면 f-string으로 약수들의 합을 작성한다.

같지 않다면 f-string으로 구문을 작성한다.