jyamethyst21 님의 블로그

백준 9506번 - 약수들의 합 (PYTHON 풀이) 본문

CODING 💻

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

jyamethyst21 2025. 9. 2. 19:39

문제: 

 

풀이:

완전수를 구하는 문제이다. 예제처럼 출력되게 만드는 게 급 헷갈려서 헤멨다.. 항상 비쥬얼스튜디오로 먼저 돌려보고 답안을 제출하는데 아래와 같이 코드를 작성하고 실행했을 때 이상 없어서 백준에 올렸더니 틀렸다고 떠서 고민을 많이 했다.. 

a=int(input())
k=[]
q=0
for i in range(1,a):
    if a % i == 0:
        k.append(i)
q=sum(k)

if q==a:
    print(f"{a} = ", end="")
    print(" + ".join(map(str,k)))
else:
    print(f"{a} is NOT perfect.")

 

사람은 역시나 같은 실수를 반복한다고.. -1 을 입력 받았을 때 종료되는 처리를 반영하지 않아서 틀린거였다.

아래와 같이 수정하면 해결된다!~

while True:
    a=int(input())
    if a==-1:
        break
    k=[]
    q=0
    for i in range(1,a):
        if a % i == 0:
            k.append(i)
    q=sum(k)

    if q==a:
        print(f"{a} = ", end="")
        print(" + ".join(map(str,k)))
    else:
        print(f"{a} is NOT perfect.")

join을 오랜만에 써서 헷갈렸는데 출력 예제처럼 만들기 위해 숫자형인 k를 str형으로 변환하고 각 값 사이에 '+'를 넣어서 예제처럼 출력되게 만들면 된다! 

약수 파트가 개인적으로 재미있는 거 같다 얏호