-
[BOJ]백준 3079번: 입국심사(Python)/BinarySearchProblem Solving/BOJ(백준) 2021. 8. 26. 14:54
https://www.acmicpc.net/problem/3079
오랜만에 다시 푼 이진탐색 문제 입국심사
loop invariant에 대해 알고난 뒤에는 탐색 범위 설정에 유의하고 나니 설계도 더 명확하게 되고 잘 풀리는 느낌이다
대부분의 이진탐색에서 공통적으로 적용되는 조건인 left < right를 제외하면,
이 문제에서는 left일 때에는 모든 사람이 통과하는 것이 불가능하고 right일 때 에는 모든 사람이 통과하는 것이 가능해야 한다.
따라서 mid 값을 두어 해당 값일 때 모든 심사대에서 통과할 수 있는 사람 수를 카운트하고, 가능/불가능 여부로 다음 탐탐색 범위를 결정한다.
import sys sys.stdin=open('python/input.txt','r') input=sys.stdin.readline n,m=map(int,input().split()) t=[] for _ in range(n): t.append(int(input())) left=0 right=10**19 while left+1<right: mid=(left+right)//2 cnt=0 for time in t: cnt+=mid//time if cnt>=m: right=mid else: left=mid print(right)
'Problem Solving > BOJ(백준)' 카테고리의 다른 글
[BOJ]백준 22939번: 쿠키크루(Python)/BruteForce (442) 2021.08.27 [BOJ]백준 22953번: 도도의 음식 준비(Python)/Backtracking, BinarySearch (426) 2021.08.26 [BOJ]백준 21941번: 문자열 제거(Python)/String, DP (449) 2021.08.25 [BOJ]백준 2240번: 자두나무(C++)/DP (419) 2021.08.23 [BOJ]4358번: 생태학(C++) (419) 2021.08.20