목록알고리즘 문제 (57)
성장일기
Q> 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대해 회의실 사용표를 만들자 회의실을 사용할 수 있는 최대 강의실 수 힌트) (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. ✨주의 1. 최대 개수 2. 끝남과 동시에 시작 가능 3. 시작하자마자 끝날 수 있음 🧨 정렬을 잘하자 import sys import heapq input = sys.stdin.readline n = int(input().rstrip()) #강의 갯수 n study = [] # 강의 for x in range(n) : start, end = map(int, input().split()) study.append([start, end]) #시작시간, 끝나는시간 넣어주기 # study.sort..
Q> 시작시간과 끝나는 시간이 주어지고 최소한의 강의실을 사용해서 모든 수업이 가능하게 🧨 강의실을 가장 시작시간이 빠른 것으로 하나 만들어주고 이후에 비교하면서 끝나는 시간을 갱신하거나 새로 강의실을 만들어주는 형태 import sys import heapq input = sys.stdin.readline n = int(input().rstrip()) #강의 갯수 n study = [] # 강의 for x in range(n) : start, end = map(int, input().split()) study.append([start, end]) #시작시간, 끝나는시간 넣어주기 study.sort() #정렬 #print(study) rooms = [] heapq.heappush(rooms, study[..
Q> N x N 의 표에 수가 N^2개 채워져 있을 때 (모든 수는 자신 한 칸 위의 수보다 큼) N번째 큰 수 출력하기 🧨 처음에 다 넣고 시도하니까 메모리 초과, 시간 초과 난다 N개만 가지고 넣었다뺐다 해주면 된다 ! import sys import heapq input = sys.stdin.readline n = int(input().rstrip()) # n개의 수 받아오기 heap = [] for x in map(int,input().split()): # 처음 n개만 저장 heapq.heappush(heap,x) for y in range(1,n): # 그 뒤 부터는 for z in map(int,input().split()): heapq.heappush(heap,z) # 넣고 heapq.hea..
Q> 두 묶음의 카드를 비교, 각 카드의 수가 20장, 30장이라면 비교하는데 20+30이라 할 때, 최소한 몇 번의 비교가 필요한지 출력 첫째 줄에 카드 묶음 N, 뒤의 N줄에 각 카드묶음의 크기 https://hyojeong94.tistory.com/120 [python] 백준 15903 - 카드 합체 놀이 Q> n장의 카드 중 가장 작은 카드 두 개를 더해서 덮어 쓰는 형식, m번 반복했을 때 n장의 카드 합은? 🧨heapq로 풀 수 있다 PriorityQueue는 시간 초과😂 -> PriorityQueue에서 제공하는 동기화 때문에 느리 hyojeong94.tistory.com 위 문제와 비슷함 🧨위 문제와 완전 비슷한 문제 heapq를 쓰면 쉽게 풀 수 있음 (첫 골드4문제 😍) import s..
Q> n장의 카드 중 가장 작은 카드 두 개를 더해서 덮어 쓰는 형식, m번 반복했을 때 n장의 카드 합은? 🧨heapq로 풀 수 있다 PriorityQueue는 시간 초과😂 -> PriorityQueue에서 제공하는 동기화 때문에 느리다고함 import sys import heapq input=sys.stdin.readline n,m = map(int,input().split()) #카드 개수 n, 합체 횟수 m a = list(map(int,input().split())) heapq.heapify(a) # 힙으로 for i in range(m): temp = heapq.heappop(a) # 가장 작은 수 pop temp2 = heapq.heappop(a) # 그 다음 작은 수 pop temp_sum..
Q> 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을때, 상근이가 가지고 있는 숫자인지 아닌지 구하기 🧨set를 사용해 중복 제거하고 비교 아래 글과 거의 같은 문제 아래 문제는 숫자를 출력하고, 이 문제는 T/F를 출력하는 것만 다름 https://hyojeong94.tistory.com/112 [python] 백준 10816 - 숫자 카드 2 Q> 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로 hyojeong94.tistory.com import sys input=sys.stdin.readline n=int(input().rstrip()) #상근..