본문 바로가기

알고리즘/수학

[파이썬]2501번 약수

1 부터 N까지 나머지가 0 이되는 값을 list에 모아서 K번째 수를 찾는다

어차피 처음부터 차례대로 리스트에 쌓이기 때문에 굳이 sort할 필요는 없다

 

import sys
#sys.stdin=open("./acmicpc/1037.txt",'rt')

n,k=map(int,input().split())


result=list()
#range(n+1) 하면 0부터 나오니깐 1로 세팅
for i in range(1,n+1) :
    if(n%i == 0) :
        result.append(i)


if len(result)>0 and len(result) > (k-1) :
    print(result[k-1])
else :
    print(0)


 좀 더 나은 속도를 위해 Count를 세서 break문으로 빠져나간다.

근데 백준에서 보니깐 차이가 없다;;

import sys
#sys.stdin=open('./acmicpc/1037.txt','rt')
n, k =map(int,input().split())

count = 0
result = 0
for i in range(1,n+1) :
    if n%i == 0 :
        count+=1
    # 만약 i와 k가 같다면 break로 빠져나온다    
    # 만약 k가 count보다 크다면 break로 빠져나오지 않는다.
    if count == k :                
        result=i
        break


print(result)

'알고리즘 > 수학' 카테고리의 다른 글

[Kotlin ]2501번 약수  (0) 2020.12.23