코딩하는 베어브릭
구현 문제 #1. K번째 약수 본문
*이 풀이는 인프런: 파이썬 알고리즘 문제풀이 강좌에 기반하였습니다.
내 풀이
1. 모든 약수를 구해서 배열에 저장한다.
2. K번째 약수가 존재하지 않는 경우를 if문을 통해 예외처리한다.
import sys
sys.stdin=open("input.txt","rt")
n, k = map(int, input().split())
measure=[]
for i in range(1,n+1):
if n%i==0:
measure.append(i)
if len(measure) < k:
print('-1')
else:
print(measure[k-1])
강사님 풀이
import sys
sys.stdin=open("input.txt","rt")
n,k=map(int,input().split())
cnt=0
for i in range(1,n+1):
if n%i==0:
cnt+=1
#k번째 약수 발견
if cnt==k:
print(i)
break
#for문이 제대로 돌아가는 경우 else문 실행 = k번째 약수 찾지 못함
else:
print(-1)
배운 점
1. 필요없는 것까지 모두 저장하지 말고, 조건에 부합하는 것만 구하기
2. 변수를 이용해 원하는 값 저장하기
3. for-else문: for문이 제대로 돌아가면 else문을 실행하고, 그렇지 않으면 else문을 실행하지 않는다
'알고리즘 > 인프런: 파이썬 알고리즘 문제풀이' 카테고리의 다른 글
| 구현 문제 #6. 자릿수의 합 (0) | 2022.05.16 |
|---|---|
| 구현 문제 #5. 정다면체 (0) | 2022.05.15 |
| 구현 문제 #4. 대표값 (0) | 2022.05.15 |
| 구현 문제 #3. K번째 큰 수 (0) | 2022.05.15 |
| 구현 문제 #2. K번째 수 (0) | 2022.05.15 |
Comments