Lumpy Space Princess - Adventure Time
코딩테스트/파이썬 알고리즘 문제풀이 입문

[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - K번째 약수

yaebb_82 2023. 4. 6.

*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.

 

 

문제

두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.

 

 

 

풀이

• 내 풀이

import sys
input = sys.stdin.readline

N, K = map(int, input().split())
nums = list()

for i in range(1, N+1):
    if N%i == 0:
        nums.append(i)

if len(nums) < K:
    answer = -1
else:
    answer = nums[K-1]

print(answer)

 

• 답안

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)

- 내가 푼 방법도 맞긴 하나,  for ~ else 구문을 사용했을 때가 좀 더 코드가 효율적이라는 것을 느끼게 되었다.

- 여기서 포인트는 for문이 break에 의해서 멈춰지지 않고, 정상적으로 다 돌았을 때 else문으로 넘어가게 된다.

  (= K번째에 해당하는 약수가 없을 때 -1을 출력한다.)

 

 

 

반응형

댓글