본문 바로가기
Backjoon

Backjoon problem 9506 약수들의 합 - python

by ddahu 2023. 5. 4.

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

 

9506번: 약수들의 합

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

www.acmicpc.net

 

  • 입력과 출력

  • 소스코드
result =[]
strs = ""
while True:
    N = int(input())
    if N == -1: 
        break
    lst = [i for i in range(1,N+1) if N % i == 0]
    if sum(lst[:-1:]) == lst[-1]:
        strs = f'{lst[-1]} = {" + ".join(map(str,lst[:-1:]))}'
        result.append(strs)
    else:
        strs =f'{lst[-1]} is NOT perfect.'
        result.append(strs)
for i in result:
    print(i)
  • 해설

완전수라는 것을 구하기 위해 약수를 구하고 구해진 약수 리스트에 마지막 을 제외한 값이 N 또는 약수의 마지막 값이 같으면 출력을 하면되는 문제이다.

 

f-format 파이썬 포맷 형식을 사용하여 strs 라는 변수에 저장하여 result 리스트에 저장하여 출력하는 방식을 선택하였고

{" + ".join(map(str,lst[:-1:]))} 이 부분은 각 리스트를 map 으로 하나씩 볼때 출력 예제에 나와있는 + 를 하나씩 붙여주기 위함이다.