728x90
반응형
이분 탐색 문제이다. 처음에 e를 max(li)-2*K로 설정하는 허튼짓을 하는 바람에 엄청나게 많이 틀렸다.
s가 0이면 0으로 나눌 경우가 생길 수 있기 때문에 1로 시작해야 된다. PyPy3로 제출해야 통과된다.
import sys
def count(li, m):
t = 0
for n in li:
if n <= K:
continue
elif n < 2*K:
n -= K
else:
n -= 2*K
t += n//m
return t
N, K, M = map(int, sys.stdin.readline().split())
li = [int(sys.stdin.readline()) for _ in range(N)]
s, e = 1, max(li)
res = 0
while s <= e:
m = (s+e)//2
if count(li, m) >= M:
res = m
s = m+1
else:
e = m-1
print(res if res else -1)
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1459번 걷기(python) (0) | 2021.03.09 |
---|---|
백준 알고리즘 1408번 24(python) (0) | 2021.03.09 |
백준 알고리즘 4564번 숫자 카드놀이(python) (0) | 2021.03.08 |
백준 알고리즘 4458번 첫 글자를 대문자로(python) (0) | 2021.03.08 |
백준 알고리즘 4328번 기초 나머지 계산(python) (0) | 2021.03.08 |