코딩테스트/파이썬 알고리즘 문제풀이 입문
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - K번째 약수
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.
문제
두 개의 자연수 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을 출력한다.)
반응형
'코딩테스트 > 파이썬 알고리즘 문제풀이 입문' 카테고리의 다른 글
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 자릿수의 합 (0) | 2023.04.11 |
---|---|
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 정다면체 (0) | 2023.04.07 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 대표값 (0) | 2023.04.07 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - K번째 큰 수 (0) | 2023.04.06 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - K번째 수 (0) | 2023.04.06 |
댓글