-
[파이썬][백준]9506번-약수들의 합코딩공부/백준알고리즘 2020. 7. 29. 13:02
https://www.acmicpc.net/problem/9506
9506번: 약수들의 합
문제 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.
www.acmicpc.net
문제설명)
n을 입력받고, n의 약수들을 구하여 한 리스트에 넣는다
리스트의 맨 끝은 n 자기자신일거니까,
리스트의 처음~맨끝의 바로 전 의 합=맨끝 이 되면 완전한 수가 되는 것이다.
그걸 n에 -1이 나올 때까지 반복한다. -1이 나오면 종료시킨다.
while True: n = int(input()) # 수를 받는다 if n==-1: # -1이 입력되면 break # 종료 temp_n=[] # 약수가 들어갈 리스트 for i in range(1,n+1): if n%i==0: # n이 i로 나누어떨어지면 temp_n.append(i) # 리스트에 추가 sum_l=0 # 인덱스 0~마지막 전 까지의 합 sum_r=temp_n[len(temp_n)-1] # 마지막 인덱스(n 자기자신)의 값 for i in temp_n[:-1]: sum_l+=i # 리스트 요소들을 더한다 if sum_l==sum_r: # 둘이 같으면 완전수 answer=str(sum_r)+" = "+str(temp_n[0]) for i in range(1,len(temp_n)-1): answer+=" + "+str(temp_n[i]) print(answer) else: # 둘이 다르면 완전수 아님 print(str(temp_n[-1])+" is NOT perfect.")
꺅!
'코딩공부 > 백준알고리즘' 카테고리의 다른 글
[파이썬][백준]10988번-팰린드롬인지 확인하기 (0) 2020.07.29 [파이썬][백준]5717번-상근이의 친구들 (0) 2020.07.29 [파이썬][백준]10103번-주사위 게임 (0) 2020.07.29 [파이썬][백준]1541번-잃어버린 괄호 (0) 2020.07.29 [파이썬][백준]4101번-크냐? (0) 2020.07.28