본문 바로가기
Algorithm

[브루트포스/수학] 백준 2501 약수 구하기 - Python

by jangThang 2022. 2. 4.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    2501번: 약수 구하기

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

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     N의 K번째 약수를 구하는 문제입니다.

     

    2022.01.16 - [Algorithm] - [Algorithm] 브루트 포스(Brute Force)는 노가다 기법?

     

    [Algorithm] 브루트 포스(Brute Force)는 노가다 기법?

    [ Contents ] 1. 브루트 포스란?  Brute(짐승 같은, 난폭한) + Force(힘, 폭력)의 합성어입니다. 무식하게 푸는 기법으로, '노가다'에 가까운 접근법입니다. 모든 경우의 수를 시험해보며 문제를 해결합니

    star7sss.tistory.com

     1부터 N까지 1씩 늘려가며, 약수가 맞는지 확인합니다.

     

     

     

    3. 코드

    N, K = map(int, input().split())
    
    cnt = 0
    for divide in range(1,N+1):
        # 약수일 경우, cnt + 1
        if N % divide == 0:
            cnt += 1
    
        # k번째 약수일 경우, 출력
        if cnt == K:
            print(divide)
            break
    # k번째 약수 없음
    else:
        print(0)

     나머지가 0이면, N을 나눈 수는 N의 약수입니다. 1부터 N까지 1씩 늘려가며, 나눈 다음 나머지가 0인 약수를 찾습니다. count(cnt)가 k번째인 약수를 찾으면 출력합니다.

     만약 없다면 0을 출력합니다. 파이썬에서는 for-else구문을 사용해서 쉽게 구현할 수 있습니다.

     

     

     

    반응형

    댓글