백준
[백준] 9506번 : 약수들의 합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 10. 23. 13:10
728x90
반응형
9506번: 약수들의 합
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
www.acmicpc.net
1. 문제 설명
2. 풀이과정
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- -1을 입력받았을 때 종료하기 위해 무한 반복문을 사용한다. while (True)
- 숫자를 입력받는다. n = int(sys.stdin.readline())
- 만약 -1을 입력했다면 종료한다. if (n == -1): break
- 그게 아니라면 약수를 저장할 리스트를 생성한다. li = list()
- 약수를 출력하기 위해 문자열로도 약수를 저장할 리스트를 생성한다. s = list()
- 1부터 n전까지 수를 불러오면 for i in range(1, n)
- 만약 불러온 수가 약수이면 if (n % i == 0)
- 해당 수를 리스트에 저장한다. li.append(i)
- 문자열 형식으로 바꿔서도 저장한다. s.append(str(i))
- 만약 약수의 합이 입력받은 수이면 if (sum(li) == n)
- 완전수이므로 n을 출력하고 이를 덧셈의 결과로 출력한다. print(n, end=' = ') print(' + '.join(s))
- 완전수가 아니면 n을 출력하고 지정 문구를 출력한다. print(n, end=' ') print('is NOT perfect.')
반응형
3. 소스코드
import sys
while (True):
n = int(sys.stdin.readline())
if (n == -1):
break
li = list()
s = list()
for i in range(1, n):
if (n % i == 0):
li.append(i)
s.append(str(i))
if (sum(li) == n):
print(n, end=' = ')
print(' + '.join(s))
else:
print(n, end=' ')
print('is NOT perfect.')
728x90
반응형