[한국정보올림피아드](python) K번째 약수

berry ·2021년 5월 1일
0

Algorithm

목록 보기
12/77
post-thumbnail


내 풀이

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번째 숫자까지만 돌다 나오기 때문에 속도가 훨씬 빠를 것으로 생각된다

profile
Engineer

0개의 댓글