문제풀이/이분탐색

https://www.acmicpc.net/problem/16564 코드n, k = map(int, input().split())x = [int(input()) for _ in range(n)]s, e = 1, int(1e9)+1ans = 0while s  기본적인 매개 변수 탐색 방법으로 풀 수 있다.다만, 조심해야 할 것은 초기 s와 e 값이다. 처음에는 e의 초기값을 int(1e9)으로 두고 했더니 틀렸었다. 다시 보니 이렇게 하면 가능한 팀 최대 레벨이 1,000,000,000인 경우를 구할 수 없기 때문이었다. s = 1, e = 10이라고 두고 가능한 팀 최대 레벨이 10이 되는 것을 구하는 경우를 생각해보니 mid=10이 되기 전에 s=10, e=10이 되어서 while문을 빠져나오기 때문에..
https://www.acmicpc.net/problem/16401 코드m, n = map(int, input().split())l = list(map(int, input().split()))s, e = 1, max(l)ans = 0while s = m: s = mid+1 ans = mid else: e = mid-1print(ans)
https://www.acmicpc.net/problem/6236 코드n, m = map(int, input().split())money = [int(input()) for _ in range(n)]def chk(k): # m번 이하로 인출할 수 있는지 if k  매개 변수 탐색(Parametric Search)조건을 만족하는지 안하는지 여부로 범위를 좁혀나가는 알고리즘이다. 이 문제에서의 조건은 한 번에 인출하는 금액은 k로 제한하고 n일 동안 m번만 인출하여 생활이 가능한지 여부이다. 이 때 정확히 m번을 맞추기 위해 필요 없을 때도 인출할 수 있으므로 m번 이하로 인출 가능한지 여부만 판단하면 된다.
https://www.acmicpc.net/problem/15823 코드import sysinput = sys.stdin.readlinen, m = map(int, input().split())arr = list(map(int, input().split()))def chk(num): # Two Pointer pack = set() l, r = 0, 0 cnt = 0 while r  50점만 받을 수 있는 코드이다.Parametric Search과 Two Pointer 알고리즘을 사용했는데, Parametric Search에서 조건을 검사할 때 Two Pointer를 사용한다. bs() : Parametric Search하나의 카드 팩을 구성할 수 있는 최대 카드 수를 Parame..
1114번: 통나무 자르기 첫째 줄에 두 개의 수를 출력한다. 첫 번째 수는 가장 긴 조각의 길이이고, 두 번째 수는 그 때 처음 자르는 위치를 출력한다. 만약 가능한 것이 여러 가지라면, 처음 자르는 위치가 작은 것을 출 www.acmicpc.net 코드 l, k, c = map(int, input().split()) points = [0]+sorted(list(map(int, input().split())))+[l] pieces = [points[i+1]-points[i] for i in range(k+1)] longest = max(pieces) def chk(length): # 최대 길이 if longest > length: # 가능한 최대 길이보다 더 긴 통나무가 있는 경우 return [100..
딜레이레이
'문제풀이/이분탐색' 카테고리의 글 목록