https://www.acmicpc.net/problem/14627코드import sysinput = sys.stdin.readlines, c = map(int, input().split())green_onion = [int(input()) for _ in range(s)]answer = 0l, r = 1, max(green_onion)while l = c: l = mid+1 answer = ramyeon + (chicken-c)*mid else: r = mid-1print(answer) 이 문제는 조건을 만족하는 값 중 최대 값을 구하는 문제이기 때문에 파라메트릭 서치 알고리즘으로 풀 수 있는 문제이다. 여기서 조건은 다음과 같다.- 각 파닭에 같은 양의 파를..
문제풀이/이분탐색
https://school.programmers.co.kr/learn/courses/30/lessons/340212코드function solution(diffs, times, limit) { let answer = 0; const check = (level) => { const requireTime = [times[0]]; for (let i = 1; i 0) { const len = requireTime.length; requireTime[len - 1] += gap * (times[i] + times[i - 1]); } } const total = requireTime.reduce((acc, cur) => acc + cur, 0); r..
https://www.acmicpc.net/problem/14233 코드n = int(input())deadlines = list(map(int, input().split()))deadlines.sort()l, r = 0, int(1e9)while l 조건에 맞는 최댓값을 찾는 문제이기 때문에 매개 변수 탐색(Parametric Search)를 사용하여 풀었다. 위 코드는 다음과 같은 과정으로 진행된다:1. 당연히 마감기한이 짧은 애들부터 먼저 해야 하니까 마감기한을 오름차순 정렬한다.2. K값을 찾기 위해 매개 변수 탐색을 수행한다. `l - mid는 l과 r의 중간값으로 설정한다. mid는 일을 하는 시간 k에 해당하는 값이라고 생각하면 된다. - 오름차순으로 정렬된 마감기한들에 대해 ..
https://www.acmicpc.net/problem/14452코드from heapq import heappop, heappushimport sysinput = sys.stdin.readlinen, t_max = map(int, input().split())durations = [int(input()) for _ in range(n)]def calculate_total_duration(k): stage = [] # 시작 for i in range(k): heappush(stage, durations[i]) # 무대 진행 time = 0 d_idx = k while time 보통 이렇게 정해진 범위 안에서 가장 작은 값 또는 가장 큰 값을 구하는 문제..

https://leetcode.com/problems/median-of-two-sorted-arrays/description/코드 (이분탐색)class Solution: def findMedianSortedArrays(self, nums1, nums2) -> float: n = len(nums1) m = len(nums2) if n > m: return self.findMedianSortedArrays(nums2, nums1) left, right = 0, n while left min2: right = partition1-1 else: lef..