728x90
반응형
핵심 포인트
- 기초 구현력
- 약수의 정의
제출코드
N, K = map(int, input().split())
div = [n for n in range(N, 0, -1) if N % n == 0]
if len(div) < K: print(0)
else: print(div[::-1][K-1])
해설
두 자연수 N과 K가 입력되면 제일 먼저 N의 약수가 무엇인지 알아야합니다. 저는 리스트 컴프리헨션에 조건문을 추가하여 N부터 시작해서 1까지 1씩 감소시키면서 N을 나누었을 때 나누어떨어지는 수를 div 리스트에 append 하여 약수들이 들어간 리스트를 만들었습니다. 다음으로 K가 약수의 개수보다 크면 출력할 수 있는 약수가 없기 때문에 0을 출력해줍니다. K가 약수의 개수보다 작은 경우에는 현재 div 리스트가 내림차순으로 정렬되어있기 때문에 [::-1]을 통해 역순으로 바꾼 뒤 K번째 값을 출력해줍니다. 이때, 리스트의 인덱스는 0부터 시작하기 때문에 실제로 출력할 때는 K - 1번째 값을 출력합니다.
참고자료 및 그림출처
728x90
반응형
'Programming > Coding Problem' 카테고리의 다른 글
BOJ 27323번: 직사각형 (0) | 2023.06.03 |
---|---|
BOJ 9506번: 약수들의 합 (0) | 2023.05.30 |
BOJ 5086번: 배수와 약수 (0) | 2023.05.28 |
BOJ 2903번: 중앙 이동 알고리즘 (0) | 2023.05.24 |
BOJ 2720번: 세탁소 사장 동혁 (0) | 2023.05.23 |