We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent fc0ff55 commit f04b019Copy full SHA for f04b019
minjeong/BinarySearch/2024-08-07-[백준]-#1300-K번째수.py
@@ -0,0 +1,26 @@
1
+import sys
2
+input = sys.stdin.readline
3
+
4
+N = int(input()) # 배열의 크기
5
+k = int(input()) # 찾고자 하는 k번째 작은 값의 위치
6
7
+start, end = 0, N * N # 이분탐색 범위 설정 (0 ~ N*N)
8
+# 이분탐색 시작
9
+while start <= end: # start와 end가 교차되기 전까지 계속 반복
10
+ mid = (start + end) // 2
11
+ count = 0
12
+ # 각 행마다 mid보다 작거나 같은 값이 몇 개인지 세기
13
+ for i in range(1, N + 1):
14
+ # mid를 i로 나눈 값과 N 중 작은 값을 더함
15
+ # 이는 i번째 행에서 mid보다 작거나 같은 값의 개수를 의미
16
+ count += min(mid // i, N)
17
18
+ if count < k:
19
+ # mid보다 작거나 같은 값의 개수(count)가 k보다 작으면, k번째 값은 더 큰 값 중에 있음
20
+ start = mid + 1
21
+ else:
22
+ # 그렇지 않으면, k번째 값은 더 작은 값 중에 있음
23
+ end = mid - 1
24
25
+# 최종적으로 start 값이 k번째로 작은 값이 됨
26
+print(start)
0 commit comments