-코드
from sys import stdin
k, n = map(int, input().split())
a = sorted([int(stdin.readline()) for _ in range(k)])
start = 1
end = sum(a) // n
while start <= end:
mid = (start + end) // 2
r = 0
for l in a:
r += l // mid
if r >= n:
start = mid + 1
else:
end = mid - 1
print(end)
처음에 그냥 for문으로 해결하려다 보니 시간 초과가 나서 분류를 보니까 이분 탐색문제 였습니다. 그래서 처음에 for문을 쓸 때, 사용했던 sum(a) // n을 end로 두고 start를 1로 두어서 만들려고 했는데 전에 이분탐색 문제를 풀긴했으나 응용이 안되어서 아래 if문을 잘 만들지를 못해서 이분 탐색문제를 많이 풀어서 응용이 가능하게 익숙해져야 할 필요성을 깨달았습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬]1929번 소수 구하기 (0) | 2021.05.13 |
---|---|
[백준/파이썬]2805번 나무 자르기 (0) | 2021.05.12 |
[백준/파이썬]4949번 균형잡힌 세상 (0) | 2021.05.10 |
[프로그래머스/파이썬] 완주하지 못한 선수 (0) | 2021.05.09 |
[백준/파이썬]2702번 초6 수학 (0) | 2021.05.09 |