https://www.acmicpc.net/problem/9506
[문제 이해]
어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다.
ex) 6 = 1+2+3 →6은 완전수 / 12 ≠ 1+2+3+4+6 →12는 완전수 X
[문제 접근]
해당 숫자의 약수들을 모두 리스트에 넣고 그 리스트의 sum이 입력한 숫자와 비교한다.
리스트의 sum과 숫자가 같다면 6 = 1 + 2 + 3 이런 식으로 출력하고, sum이 입력한 숫자와 같지 않다면 12 is NOT perfect 이런 식으로 출력한다.
[정답]
1. while문을 무한반복으로 돌면서 -1을 입력하면 break한다.
2. 해당 숫자의 약수들을 저장할 num을 정의하고 해당 숫자를 n에 입력받는다. 답을 출력할 문자열 ans을 정의한다.
3. for문을 돌면서 약수들을 찾아내 리스트 num에 추가한다.
4. 만약 sum(num)==n 이라면, 'n ='을 ans에 추가하고 for문을 돌면서 약수들 더하기와 함께 추가한다. 그리고 첫번째 ' +'을 ''으로 바꾸어준다. ex) 6 = + 1 + 2 + 3 → 6 = 1+ 2+ 3 . 그런 다음 ans을 출력한다.
5. 만약 sum(num)!=n 이라면, '해당숫자 is NOT perfect.' 을 출력한다.
'알고리즘 공부 > 백준 > Python3' 카테고리의 다른 글
[백준 파이썬] #2475: 검증수 (0) | 2021.02.04 |
---|---|
[백준 파이썬] #2920: 음계 (0) | 2021.02.03 |
[백준 파이썬] #10988: 팰린드롬인지 확인하기 (0) | 2021.02.01 |
[백준 파이썬] #7567: 그릇 (0) | 2021.01.31 |
[백준 파이썬] #10886: 0=not cute/1=cute (0) | 2021.01.29 |