[Baekjoon] 1300번 : K번째 수
1. 문제
https://www.acmicpc.net/problem/1300
- 탐색 문제
// 문제
세준이는 크기가 N×N인 배열 A를 만들었다.
배열에 들어있는 수 A[i][j] = i×j 이다.
이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다.
B를 오름차순 정렬했을 때, B[k]를 구해보자.
배열 A와 B의 인덱스는 1부터 시작한다.
// 입력
첫째 줄에 배열의 크기 N이 주어진다.
N은 105보다 작거나 같은 자연수이다.
둘째 줄에 k가 주어진다.
k는 min(109, N2)보다 작거나 같은 자연수이다.
// 출력
B[k]를 출력한다.
// 예제 입력 1
3
7
// 예제 출력 1
6
2. 핵심 아이디어
- 이분탐색 활용
3. Python 문제풀이
import sys
input = sys.stdin.readline
n, k = int(input()), int(input())
start, end = 1, k
while start <= end :
mid = (start + end) // 2
tmp = 0
for i in range(1, n+1) :
tmp += min(mid // i, n)
if tmp >= k :
result = mid
end = mid - 1
else :
start = mid + 1
print(result)
4. Java 문제풀이
댓글남기기