N,K = list(map(int, input().split()))
if not (1<=N<=10000 and 1<=K<=N):
print("N은 1이상 10,000 이하이며 K는 1 이상 N이하여야 합니다")
# 6의 약수 : 1,2,3,6
# 임의로 q를 2라고 하고
# p의 약수를 리스트로 리턴하여 준다.
def show_divisors(N,K):
divisors = []
for idx in range(1, N+1):
if N%idx == 0:
divisors.append(idx)
print(f"dvisors : {divisors}")
divisors_length = len(divisors)
if divisors_length < K:
return -1
return divisors[K-1]
show_divisors(N,K)
6 5
dvisors : [1, 2, 3, 6]
-1
6 3
dvisors : [1, 2, 3, 6]
주의 사항 :
+1
을 해주어 K번째 약수가 나오도록 변경하였음.여기서 중요한 점이 K번째 인덱스 != K번째 약수는 엄연히 다르다는 점
결론 : 인프런 풀이 방식이 3배 이상 속도가 빠름.즉 100의 약수에서 2번째 약수를 구한다고 하면 인프런 방식은 100의 약수 모두를 알 필요 없이 1과 2까지만 연산하고 그 다음은 연산하지 않는다. 하지만 내가 처음 고안한 방식은 100의 약수를 모두 구하고 2번째 값을 구하는 방법이다.