개발 노트/알고리즘 문제

백준 9506 약수들의 합

LeeInGyu 2025. 3. 25. 15:06

백준 9506 약수들의 합

링크: 9506 약수들의 합


접근 방법

  • 약수는 n의 절반 값까지 반복해서 찾으면 된다.
  • 모든 약수를 찾고 리스트로 변환 후 출력해서 처리

소스 코드

소스 코드: 91980463 제출

while True:
    n = int(input())

    if n == -1:
        break

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

    # print("[debug]", divisor_list)
    if sum(divisor_list) == n:
        print(f"{n} = ", end="")
        print(*divisor_list, sep=" + ")
    else:
        print(f"{n} is NOT perfect.")

결론

  • 소수를 찾는 방법 중 n**0.5+1 까지 반복하는 것이 있던 것 같은데, 그것과 헷갈려서 알고리즘을 수정하는 과정에서 시간이 조금 소비 되었다.
  • 단정지어서 알고리즘을 생각하지 말고, 가능성을 열어두고 프로그래밍을 시작해야 할 것 같다.
728x90
반응형