728x90
반응형
핵심 포인트
- 기초 구현력
- 약수의 정의
제출코드
while True:
N = int(input())
if N == -1: break
div = [n for n in range(1, N//2+1) if N % n == 0]
if sum(div) == N: print("{} = {}".format(N, ' + '.join(map(str, div))))
else: print("{} is NOT perfect.".format(N))
해설
언제 입력이 끝날 지 모르기 때문에 while 문을 이용해서 -1이 입력되면 반복문을 탈출할 수 있도록 만들어놓습니다. 다음으로 지난 포스팅에서 본 것과 동일한 방법으로 약수를 찾는 데 다른 점은 가장 큰 약수는 주어진 수의 절반이므로 N // 2만큼 순회합니다. 만약 div의 담긴 약수의 합과 N이 동일하다면 완전수이므로 주어진 조건대로 출력해주면 됩니다.
참고자료 및 그림출처
728x90
반응형
'Programming > Coding Problem' 카테고리의 다른 글
BOJ 1085번: 직사각형에서 탈출 (0) | 2023.06.05 |
---|---|
BOJ 27323번: 직사각형 (0) | 2023.06.03 |
BOJ 2501번: 약수 구하기 (0) | 2023.05.29 |
BOJ 5086번: 배수와 약수 (0) | 2023.05.28 |
BOJ 2903번: 중앙 이동 알고리즘 (0) | 2023.05.24 |