코딩문제풀이/Baekjoon
[Python_Search] 백준 1300 : K번째 수
코딩하는 포메라니안
2021. 8. 21. 20:25
1. 문제
https://www.acmicpc.net/problem/1300
1300번: K번째 수
세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B
www.acmicpc.net
2. 풀이 과정
n이 5이고 검사하는 값을 mid = 6이라고 할 때, 6보다 작거나 같은 값의 수는 아래와 같다.
1*1, 1*2, 1*3, 1*4, 1*5
2*1, 2*2, 2*3, 2*4 ,2*5
3*1, 3*2, 3*3, 3*4, 3*5
4*1, 4*2, 4*3, 4*4, 4*5
5*1, 5*2, 5*3, 5*4, 5*5
각 행에서 6보다 작은 값의 수는 min(6//(행의 수), n)와 같다.
n = int(input())
k = int(input())
def search(start, end):
while start <= end:
count = 0
mid = (start+end)//2
for i in range(1, n+1):
count += min(mid//i, n)
if count < k:
start = mid + 1
else:
end = mid - 1
return start
print(search(1, n*n))