핵심 포인트 기초 구현력 약수의 정의 제출코드 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, K = map(int, input().split()) div = [n for n in range(N, 0, -1) if N % n == 0] if len(div) < K: print(0) else: print(div[::-1][K-1]) 해설 두 자연수 N과 K가 입력되면 제일 먼저 N의 약수가 무엇인지 알아야합니다. 저는 리스트 컴프리헨션에 조건문을 추가하여 N부터 시작해서 1까지 1씩 감소시키면서 N을 나누었을 때 나누어떨어지는 수를 div 리스트에 append 하여 약수들이 들어간 리스트를 만들었습니다. 다음으로 K가 약수의 개수보다 크면 출력할 수 있는 약수가 없기 때문에 0을 출력해줍니다. K가 약수의 개수보다 작은 경우에는 현재 div 리스트..
핵심 포인트 기초 구현력 제출코드 while True: N, M = map(int, input().split()) if N == M == 0: break if N M and N % M == 0: print('multiple') else: print('neither') 해설 여기서 입력이 언제 끝날지 모르기 때문에 무한 반복문을 걸어주어야합니다. 이때, 두 자연수를 입력받았을 때 둘 다 0이라면 그냥 반복문을 종료시킵니다. 다음으로 N M 인 경우에 N을 M으로 나누어 떨어지면 'multiple'라고 출력하면 됩니다. 두 경우 모두 해당하지 않으면 ..