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 으로 하나씩 볼때 출력 예제에 나와있는 + 를 하나씩 붙여주기 위함이다.
'Backjoon' 카테고리의 다른 글
| Backjoon problem 10898 수 정렬하기 3- python (0) | 2023.05.18 |
|---|---|
| Backjoon problem 1987 소수 찾기 - python (0) | 2023.05.04 |
| Backjoon problem 2501 약수 구하기 - python (0) | 2023.05.04 |
| BackJoon Problem 5086 배수와 약수 -Python (0) | 2023.05.04 |
| Backjoon Problem 10757 큰 수 덧셈 - Python (0) | 2023.05.03 |