가자미의 개발이야기
[알고리즘] 약수 k번째 약수 구하기 본문
#문제 :
두 개의 자연수 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를 실행한다.
'Computer Science > 알고리즘' 카테고리의 다른 글
[알고리즘] 대표값 구하기 (0) | 2021.05.16 |
---|---|
[알고리즘] K번째 큰 수 (0) | 2021.05.16 |
[알고리즘] 약수 k번째 약수 구하기 (0) | 2021.05.11 |
[알고리즘] 차수 (0) | 2021.03.05 |
[알고리즘] 1. 알고리즘의 효율성, 분석, 차수 (0) | 2021.03.03 |