문제풀이

https://www.acmicpc.net/problem/1493 코드import sysinput = sys.stdin.readlinel, w, h = map(int, input().split())n = int(input())cubes = []for _ in range(n): a, b = map(int, input().split()) cubes.append([2**a, b])def dc(l, w, h, idx): # 분할정복 if idx == -1: # 큐브 부족 print(-1) exit() res = 0 # idx번째 큐브의 필요 개수 need = (l//cubes[idx][0])*(w//cubes[idx][0]) * (h//cubes[..
·문제풀이/DP
https://www.acmicpc.net/problem/16432 코드import sysinput = sys.stdin.readlinen = int(input())arr = []for _ in range(n): input_data = list(map(int, input().split())) arr.append(input_data[1:])dp = [[[]for _ in range(10)] for _ in range(n)]for a in arr[0]: # 첫째날 dp[0][a] = [a]for i in range(1, n): for a in arr[i]: for j in range(1, 10): if a != j and dp[i-1][j] != [..
https://www.acmicpc.net/problem/17451 코드import sysinput = sys.stdin.readlinen = int(input())v = list(map(int, input().split()))ans = v[-1]for i in range(n-2, -1, -1): if ans % v[i] != 0: ans = (ans//v[i]+1)*v[i]print(ans) 처음에 Parametric Search로 풀이했다가 시간 초과가 발생하였는데, Parametric Search 알고리즘만 하면 시간 복잡도가 O(logN)인데 조건 검사할 때마다 O(N)이 추가로 필요해서 그런 것 같다. 그래서 다시 살펴보니 Greedy로 풀이할 수 있을 것 같아서 바꾸었다. 행..
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  뽑으려는 수의 위치를 입력으로 주기 때..
딜레이레이
'문제풀이' 카테고리의 글 목록 (11 Page)