1. 문제
https://www.acmicpc.net/problem/1300
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))
'코딩문제풀이 > Baekjoon' 카테고리의 다른 글
[Python_String] 백준 1427번 : 소트인사이드 (0) | 2021.08.22 |
---|---|
[Python_Search] 백준 2470번 : 두 용액 (0) | 2021.08.21 |
[Python_Search] 백준 12015번 : 가장 긴 증가하는 부분 수열 2 (0) | 2021.08.21 |
[Python_Search] 백준 10816번 : 숫자 카드 2 (0) | 2021.08.19 |
[Python_DynamicProgramming] 백준 11053번 : 가장 긴 증가하는 부분 수열 (0) | 2021.08.13 |