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문을 실행하지 않는다