알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
문제
[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
중요내용
- input.txt 파일의 코드가 양 옆으로 나란히 써있는 경우, map() 함수를 사용하면 손쉽게 데이터를 받을 수 있다.
- map() 함수의 첫 번쨰 인자는 형 변환을 의미하고, 두 번째 인자는 input()으로 입력받는 데이터를 뜻한다.
- 숫자 연산을 위해서는 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 |
댓글