본문 바로가기
알고리즘

Algorithm - K번째 약수

by DGK 2021. 10. 25.

 

알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

문제

[K번째 약수]

 

두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.

 

 

*입력 설명

첫 번째 줄에 N과 K가 빈칸을 사이에 두고 주어진다.

단, N은 1 ≤ N ≤ 10,000이고 K는 1 ≤ K ≤ N 이다.

 

*출력 설명

첫 번째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다.

만약, N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 -1을 출력한다.

 

 


 

 

풀이(Python)

답안

import sys
sys.stdin=open('AA/input_1.txt', 'rt')


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)
    

# 출력 : 3

 

input_1.txt(입력)

6 3

 

 

중요내용

  1. input.txt 파일의 코드가 양 옆으로 나란히 써있는 경우, map() 함수를 사용하면 손쉽게 데이터를 받을 수 있다.
  2. map() 함수의 첫 번쨰 인자는 형 변환을 의미하고, 두 번째 인자는 input()으로 입력받는 데이터를 뜻한다.
  3. 숫자 연산을 위해서는 input() 함수로 받은 데이터(문자열)을 map() 함수를 통해 정수형으로 형 변환해야 한다.

 

'알고리즘' 카테고리의 다른 글

Algorithm - 정다면체  (0) 2021.11.02
Algorithm - 대표값  (0) 2021.11.01
Algorithm - 최소값 구하기  (0) 2021.10.29
Algorithm - K번째 큰 수  (0) 2021.10.29
Algorithm - K번째 수  (0) 2021.10.25

댓글