반응형
문제
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이 출력됩니다.
반응형
'Algorithm > 파이썬 알고리즘 문제풀이 (코딩테스트대비)' 카테고리의 다른 글
[파이썬 알고리즘 문제풀이] : 정다면체 (0) | 2021.12.16 |
---|---|
[파이썬 알고리즘 문제풀이] : K번째 수 (0) | 2021.12.10 |
[파이썬 알고리즘 문제풀이] : 대표값 (0) | 2021.12.10 |
[파이썬 알고리즘 문제풀이] : k번째 큰 수 (0) | 2021.12.08 |
[파이썬 알고리즘 문제풀이] : 최소 값 구하기 (0) | 2021.12.08 |
댓글