본문 바로가기
Algorithm/파이썬 알고리즘 문제풀이 (코딩테스트대비)

[파이썬 알고리즘 문제풀이] : K번째 약수

by 오주현 2021. 12. 5.
반응형
문제

N과 K라는 자연수가 주어졌을 때 N의 약수 중 K번째로 작은 수를 출력하시오.

 

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)

두 개의 숫자를 읽기 위해 map 함수에서 split을 통해 띄어쓰기를 기준으로 구분하여 두 값을 받고 그 값을 int화 시키라는 뜻 입니다.

 

6과 3을 넣는다면 6이 n에 3이 k에 들어가게 됩니다.

 

약수이면 cnt를 1 증가시킵니다.

 

그러다 k번째 약수가 발견되면 멈춥니다.

 

만약 찾지 못 했다면 -1을 해 줍니다.

 

for , else문이 있는데 브레이크가 걸렸다면 else문이 돌지 않지만 브레이크가 걸리지 않는다면 else문이 돌게 되어 -1이 출력됩니다.

반응형

댓글