<링크>

https://www.acmicpc.net/problem/3079


<풀이>

그냥 무작정 찍기로 총 걸린 시간을 찍는다. 이 때 이분탐색으로 찍는다.
최대시간은 제일 오래걸리는 심사대*인원수 이다. (초기 right 값)

l=1  
r=60 
mid  = 30 
tot = 30/7 + 30/10 = 7 //총 걸린시간으로 몇명이 지나갔는지 확인 ( 30분동안 최대 몇명이 지나갈수있는가 ) 
->몫만 있으면 됨 
이시간안으로는 총인원이 턱도없으면 
시간을 늘려줘야되고 

총인원보다 많은인원을 통과시킬수있으면 시간을 줄이고 
총인원보다 같더라도 시간을 줄여봐야한다. 왜냐하면 어느게이트에 갔냐에 따라서 시간이 더 줄어들수있기 때문 


right= 29 
left=1 
mid=15 
tot=15/7+15/10=3 //모자름 

r=29 
l=16 
m=22 
tot=22/7+22/10 = 5 //모자름 

r=29 
l=23 
m=26 
tot=26/7+26/10=5 //모자름 

r=29 
l=27 
m=28 
tot=28/7+28/10=6 //충분 

r=27 
l=27 
m=27 
tot=27/7+27/10=5 // 모자름 

이분탐색 : 답을 찍어보는 경우에 사용된다
이분탐색 다음 타겟 정하기 : 

최적의 해를 구하는 과정에서 
내가 구한값이 너무 작으면 더큰게 필요하니까 left=mid+1 해주고 
구한값이 너무 크면 더 작은게 필요하니까 right=mid-1 해주고 
구한값으로 만족하다면 ? (==일때는) -> 최적의해가 최소값이라면 right=mid-1 해서 더 줄여서 시도해본다. 
최적의 해가 최대값이라면 left=mid+1 해주면된다. 
어차피 이분탐색은 반복되더라도 l<=r일때까지만 하고 logN의 시간복잡도이기 때문에 끝까지 가봐도 시간이 충분하다.

'알고리즘 풀이 > 이분탐색' 카테고리의 다른 글

백준 2805 나무 자르기  (0) 2018.08.30
백준 13423 Three Dots  (0) 2018.08.02
백준 1939 중량제한 :: 들짐승  (0) 2018.07.23

+ Recent posts