가자미의 개발이야기

[알고리즘] 약수 k번째 약수 구하기 본문

Computer Science/알고리즘

[알고리즘] 약수 k번째 약수 구하기

가자미 2021. 5. 9. 21:54

#문제 :

두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.

▣ 입력설명 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.

 

▣ 출력설명 첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다. 만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 -1을 출력하시오.

 

import sys
sys.stdin=open("input.txt", "rt")

i=1
count=0
number, inputCount = map(int, input().split( ))

while True:
    if number%i==0:
        count+=1
    if count==inputCount:
        print(i);
        break
    if i==number and count<inputCount:
        print(-1)
        break
    i+=1

 

#헷갈리거나 새롭게 알게 된 내용

 

1. 공백 기준으로 입력받기

변수 1, 변수2 = input().split( )

 

2. 파이썬 do while 문 구현

파이썬은 do while을 지원하지 않음.

 

3. 입력받을 때는 문자열. 따라서 int형으로 변환

a, b = map(int, input().split( ))

 

4. for else 구문

for (....)

    .....break

else:

    ....

for else는 for반복문에서 break되지 않고 모든 반복이 무난히 실행됐을 때 else를 실행한다.