본문 바로가기

그리디13

[백준] 2109번 - 순회강연 (파이썬) # 순회강연 import sys input = sys.stdin.readline N = int(input()) info = [] max_day = 0 for _ in range(N): pay, day = map(int, input().split()) max_day = max(max_day, day) info.append((day, pay)) info.sort(key=lambda i: (i[1], i[0])) possible = [True for i in range(max_day+1)] result = 0 for _ in range(N): day, pay = info.pop() for d in range(day, 0, -1): if possible[d]: possible[d] = False result +.. 2022. 5. 15.
[백준] 8980번 - 택배 (파이썬) # 택배 import sys input = sys.stdin.readline N, W = map(int, input().split()) box_num = int(input()) box_info = [] for _ in range(box_num): start, end, num = map(int, input().split()) box_info.append((start, end, num)) box_info.sort(key=lambda x: (x[1])) result = 0 arr = [W for _ in range(N+1)] for x, y, num in box_info: num = min(num, min(arr[x:y])) if num != 0: for i in range(x, y): arr[i] -= nu.. 2022. 5. 13.
[백준] 24041번 - 성싶당 밀키트 (파이썬) # 성싶당 밀키트 import sys from collections import defaultdict input = sys.stdin.readline N, G, K = map(int, input().split()) info = defaultdict(list) for _ in range(N): speed, limit, isImportant = map(int, input().split()) info[isImportant].append((speed, limit)) def get_g(x, k): result = 0 for speed, limit in info[0]: result += speed*max(1, x-limit) info[1].sort(key=lambda k: -k[0]*max(1, x-k[1])) f.. 2022. 4. 15.
[프로그래머스] Lv1 - 최소직사각형 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/86491 코딩테스트 연습 - 최소직사각형 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 programmers.co.kr def solution(sizes): x, y = 0, 0 for t in sizes: t.sort() x = max(x, t[0]) y = max(y, t[1]) return x*y 그리디 1. 각 사이즈들을 정렬한다. 2. 각 width, height 별로 max값을 찾는다 3. 넓이 반환 2022. 3. 19.
[프로그래머스] Lv1 - 예산 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr def solution(d, budget): d.sort() answer = 0 for x in d: if budget >= x: budget -= x answer += 1 return answer 그리디 1. d리스트를 정렬 (가장 적은 예산부터 주기 위해서) 2. budget에서 d리스트를 빼가면서 answer를 1씩 늘려간다. 3. return answer 2022. 3. 18.
[백준] 2812번 - 크게 만들기 (파이썬) # 크게 만들기 N, K = map(int, input().split()) arr = list(map(int, input().strip())) result = [] for x in arr: if not result: result.append(x) continue while result and result[-1] < x and K != 0: K -= 1 result.pop() result.append(x) while K != 0: K -= 1 result.pop() print(*result, sep='') 자료구조(스택), 그리디 1. result 리스트를 정의하고 입력받은 값들을 하나씩 순회 - result 리스트가 비어 있다면 append하고 continue - result[-1]보다 현재 값이 더 크.. 2022. 3. 9.
[프로그래머스] 고득점Kit (6) - 그리디(2) (파이썬) 1. 구명보트 (Lv. 2) # 구명보트 def solution(people, limit): people.sort(reverse=True) answer = 0 i = 0 j = len(people) - 1 while i 2022. 3. 9.