https://www.acmicpc.net/problem/2501
2501번: 약수 구하기
첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.
www.acmicpc.net
- 입력과 출력

- 소스코드
N,M = map(int,input().split())
lst = [i for i in range(1,N+1) if N % i == 0]
try:
print(lst[M-1])
except:
print(0)
- 해설
약수를 구할려면 입력된 값을 차례대로 나누어 떨어지는 수를 구하면 된다 .
리스트 컴프리헨션 방법을 사용하여 코드를 간략화 했고
약수는 1부터시작 하므로 반복문은 1 ~ N+1 까지 반복하여 lst에 집어넣어주었다
try ~ except 문을 사용하여 만약에 두번째 입력값이 존재하지않으면 에러가 발생하여 에러대신 0을 출력하게 하였다.
이 방법은 순서대로 1부터 반복을 하므로 자동으로 오름차순으로 정렬이되기때문에 만들어진 lst 에 M-1 이 K번째로 작은 수가 될것이다.
'Backjoon' 카테고리의 다른 글
| Backjoon problem 1987 소수 찾기 - python (0) | 2023.05.04 |
|---|---|
| Backjoon problem 9506 약수들의 합 - python (0) | 2023.05.04 |
| BackJoon Problem 5086 배수와 약수 -Python (0) | 2023.05.04 |
| Backjoon Problem 10757 큰 수 덧셈 - Python (0) | 2023.05.03 |
| Backjoon Problem 달팽이는 올라가고 싶다 - Python (0) | 2023.05.03 |