# mid 라는 값으로 주어진 문제를 해결할 수 있는지 확인
def is_possible(mid):
pass
# 이분탐색을 진행할 구간 지정
lo = 0
hi = 1e9
answer = lo
# 이분탐색 start
# 1] 최대중에 최소 찾기 -> 가능하면 범위를 낮춰가기
while lo <= hi:
mid = (lo + hi) // 2
if is_possible(mid):
answer = mid
hi = mid - 1
else:
lo = mid + 1
# 2] 최소중에 최대 찾기 -> 가능하면 범위를 높혀가기
while lo <= hi:
mid = (lo + hi) // 2
if is_possible(mid):
answer = mid
lo = mid + 1
else:
hi = mid - 1
# 정답 출력
print (answer)
문제 지문에 "최소값 중 최대를 찾아라" 혹은 "최대중에 최소를 구해라"
'개발 > Algorithm' 카테고리의 다른 글
[Algorithm] 백준 BOJ 5904 Moo 게임 python 파이썬 분할정복 골드 5 (0) | 2022.09.15 |
---|---|
[Algorithm] 백준 BOJ 1074 Z python 파이썬 분할정복 실버1 (0) | 2022.09.06 |
입력의 갯수에 따른 시간복잡도 한계 : 시간초과 계산 (0) | 2022.08.24 |
최단경로 : 다익스트라 : dijkstra : 방향가중치그래프 (0) | 2022.08.24 |
그래프 : DFS/BFS : 깊이우선탐색/너비우선탐색 (0) | 2022.08.18 |