Skip to content

Commit f04b019

Browse files
committed
[BOJ] 1300. K번째 수 / 골드1 / 55분 / 힌트
1 parent fc0ff55 commit f04b019

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)