하루한줄 코딩일기

[인프런 - 파이썬 알고리즘 문제풀이] 2.1 K번째 약수 본문

Algorithm

[인프런 - 파이썬 알고리즘 문제풀이] 2.1 K번째 약수

jjuha 2022. 1. 23. 19:07

인프런 > 파이썬 알고리즘 문제풀이

섹션 2.1 K번째 약수

👊 내 문제 풀이

먼저, 숫자 n의 약수들을 구한다. n을 n 이하의 숫자 i로 나누었을 때 나누어 떨어질 경우, 숫자 i는 n의 약수이므로 answer 리스트에 저장한다. n의 약수들 중 k번째 숫자를 출력해야 하므로, answer[k-1] 를 출력한다. 단, n의 약수의 개수가 k개보다 적어서 k번째 수가 존재하지 않을 경우 -1을 출력한다.

#입력처리
n, k = map(int, input().split())
answer = []

for i in range(1, n+1):
	if n%i == 0:
		answer.append(i)

if len(answer) >= k:	#k번째 수가 존재하면
	print(answer[k-1])
else:
	print(-1)

채점 결과

 

💡 강의 해답

cnt 변수를 만들어 n의 약수가 나올 때마다 1씩 더해준다. cnt가 숫자 k가 될 때의 i가 n의 k번째 약수이므로, i를 출력한다. k번째 약수가 존재하지 않을 경우 -1를 출력해 준다.

n, k=map(int, input().split())
cnt=0
for i in range(1, n+1):
    if n%i==0:
        cnt+=1
    if cnt==k:
        print(i)
        break
else:
    print(-1)
Comments