본문 바로가기

PS/백준

[백준 1300번] K번째 수 (파이썬/python)

728x90

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

 

와 어려웠다... 진짜어려웠다

어제 자기전에 침대에 누워서 이거 생각하다 잠 안와서 늦잠잤다

 

사실 풀고 나서도 와 이게 이분탐색으로 되네? 라고 느꼈음

이분탐색 문제를 거의 안 풀어보다 싶이 했다 보니 

이분탐색 알고리즘을 떠올리는 로직이 아직 너무 불확실한듯...

이분탐색 문제를 두어문제 더 풀어봐야겠다

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import sys
 
input = sys.stdin.readline
 
= int(input())
= int(input())
 
start, end = 1, k
answer = 0
while start <= end:
    mid = (start + end) // 2
 
    cnt = 0
    for i in range(1, n + 1):
        cnt += min(mid // i, n)
 
    if cnt >= k:
        answer = mid
        end = mid - 1
    else:
        start = mid + 1
print(answer)
 
cs

 

728x90