https://www.acmicpc.net/problem/19598 코드from heapq import heappop, heappushn = int(input())time = []for _ in range(n): s, e = map(int, input().split()) time.append((s, e))time.sort() # 시작 시간을 기준으로 오름차순 정렬hq = [] # 우선순위 큐 => 사용 중인 회의실들의 사용 종료 시각for i in range(n): if hq and hq[0] 1개의 회의실이 아닌 최소의 회의실을 사용하여 N개의 회의를 모두 진행해야 한다. 그렇기 때문에 매회의마다 지금 당장 사용 가능한 회의실이 있다면 거기로 넣고, 없다면 새로운 회의실을 하나 추..
전체 글
https://www.acmicpc.net/problem/1021 코드from collections import dequen, m = map(int, input().split())pop_nums = list(map(int, input().split())) # 뽑아내려고 하는 수의 위치arr = deque([i for i in range(1, n+1)]) # 가장 처음 큐에서의 위치를 표시ans = 0for i in range(m): for j in range(len(arr)): # 뽑으려는 원소의 현재 위치 찾기 if arr[j] == pop_nums[i]: idx = j break if idx 뽑으려는 수의 위치를 입력으로 주기 때..
https://www.acmicpc.net/problem/2876 코드import sysinput = sys.stdin.readlinen = int(input())grades = [(0, 0)]for _ in range(n): a, b = map(int, input().split()) grades.append((a, b))dp = [[[0]*2 for _ in range(2)] for _ in range(n+1)] # 왼쪽 학생, 오른쪽 학생ans = [0, 5] # 명수, 그레이드for i in range(1, n+1): for j in range(2): # i번째 책상의 2명의 학생 dp[i][j][1] = grades[i][j] # 그레이드 ..
https://www.acmicpc.net/problem/1469 코드from copy import deepcopyn = int(input())x = sorted(list(map(int, input().split())))answer = []arr = [-1]*(2*n)def bt(idx): if idx == n: new_arr = deepcopy(arr) answer.append(new_arr) return for i in range(2*n-x[idx]-1): if arr[i] == -1 and arr[i+x[idx]+1] == -1: arr[i] = x[idx] arr[i+x[idx]+1] = x[idx..
https://www.acmicpc.net/problem/16202 코드from heapq import heappushimport sysinput = sys.stdin.readlinen, m, k = map(int, input().split())graph = []for i in range(m): x, y = map(int, input().split()) graph.append((i+1, x, y))def find_parent(x, parent): if x != parent[x]: parent[x] = find_parent(parent[x], parent) return parent[x]def union(a, b, parent): a = find_parent(a, pa..
https://www.acmicpc.net/problem/14430 코드n, m = map(int, input().split())board = [list(map(int, input().split())) for _ in range(n)]dp = [[0]*(m+1) for _ in range(n+1)]for i in range(1, n+1): for j in range(1, m+1): dp[i][j] = max(dp[i-1][j], dp[i][j-1])+board[i-1][j-1] # 위 or 왼쪽에서print(dp[n][m]) 로봇은 아래나 오른쪽으로 한 칸만 이동할 수 있다. 그렇기 때문에 (i, j)칸까지 얻을 수 있는 자원의 최대 숫자는 한 칸 위와 한 칸 왼쪽 중 최대값과 현재..