[韓国情報オリンピア](python)K番目の約数



説明する

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:
        print(answer[k-1])
else: #for문이 정상적으로 끝났다면 else로 안 옴. 거짓일 때만 else로 
    print(-1)
+++
k番目の数字を出力するだけでいいです.
最後に回ってから滑るので、効率的にはよく感じません.

別の解釈

n,k = map(int,input().split())
answer = 0
for i in range(1,n+1):
    if n % i == 0:
        answer += 1
    if answer == k: # 슬라이싱 말고 발견하면 그냥 출력
        print(i)
        break
else: 
    print(-1)
+++
K番目の数字にしか回らないので、ずっと速いと思います.