알고리즘/인프런: 파이썬 알고리즘 문제풀이
구현 문제 #1. K번째 약수
bearbrick
2022. 5. 14. 12:41
*이 풀이는 인프런: 파이썬 알고리즘 문제풀이 강좌에 기반하였습니다.
내 풀이
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문을 실행하지 않는다