본문 바로가기

알고리즘 문제/백준

[파이썬, Python] 백준 2501번 : 약수 구하기

https://www.acmicpc.net/problem/2501

 

2501번: 약수 구하기

첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.

www.acmicpc.net

 

 

문제는 n번째 약수를 구하는 문제이다. 반복문을 돌려서 조건을 만족 시킬 시, 해당 반복문을 탈출하고 출력을 하면 되는 간단한 문제이다.

 

a, b = map(int, input().split())
n = 0
m = 0
for i in range(1, a + 1):
  if a % i == 0:
    n += 1
  if n == b:
    m = i
    break
print(m)

유의해야 하는 점은 range의 시작을 1로 선언, 그리고 끝은 기존에 입력 받은 숫자에서 1을 꼭 더해줘야 한다.

나머지 연산을 결국 나눗셈을 하고 그 나머지를 구하는 것이기 때문에 만약 1로 시작을 하지 않으면

ZeroDivision 에러에 걸린다.

그리고 만약 +1을 해주지 않으면 자기 자신을 포함하지 않기 때문에 문제의 의미에 맞지 않는다.