업데이트:

카테고리: , ,

1. 문제

문제는 링크에 들어가면 있다.

2. 정답 코드

문제의 내 정답 코드는 다음과 같다.

import sys
input = sys.stdin.readline

S,C = map(int,input().split())
green_onions = []
for _ in range(S):
    green_onions.append(int(input()))

s = 1
e = max(green_onions)

while s<=e :

    m = (s+e)//2
    temp = 0
    for g in green_onions :
        temp += (g//m)
    if temp >= C :
        s = m+1
    else :
        e = m-1
rest = sum(green_onions)-e*C
# for g in green_onions :
#     rest += g%e

print(rest)




3. 풀이 및 생각


문제 풀이

문제는 기본적인 이진 탐색으로 해결 가능하다.


나의 생각

뭔가 mid 혹은 mid를 통해 어떤 값을 계산하면, start와 end를 땡기는 조건은 항상 기본적인 이진 탐색문제들은 대부분 동일한 것 같다. 그러니까 저 방식을 외우도록 하자.

최대 1 분 소요