본문 바로가기

알고리즘 풀이/자료구조7

[백준/파이썬] 11279번: 최대 힙 https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys import heapq maxheap = [] result = [] n = int(sys.stdin.readline()) for _ in range(n): a = int(sys.stdin.readline()) if a > 0: # 최대힙 만드는 법 heapq.heappush(maxheap, (-a, a)) else: if len(maxheap) != 0:.. 2023. 1. 14.
[백준/파이썬] 1764번 : 듣보잡 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net import sys n, m = map(int, sys.stdin.readline().split()) arr1 = set() # 듣도 못한 사람 집합 arr2 = set() # 보도 못한 사람 집합 # 듣고 못한 사람 입력 for _ in range(n): arr1.add(sys.stdin.readline().rstrip()) # 보도 못한 사람 입력 for _ in range(m): arr2... 2023. 1. 14.
[백준/파이썬] 1927번: 최소 힙 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys import heapq n = int(sys.stdin.readline()) heap = [] result = [] for _ in range(n): a = int(sys.stdin.readline()) if a > 0: heapq.heappush(heap, a) else: if len(heap) != 0: result.append(heapq.heappop(.. 2023. 1. 10.
[백준/파이썬] 1966번 : 프린터 큐 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net import sys t = int(sys.stdin.readline()) for _ in range(t): n, m = map(int, sys.stdin.readline().split()) # q = 중요도 q = (list(map(int, sys.stdin.readline().split()))) # arr = 순서 arr = list(range(len(q))) # 내가 원하는 순서 arr[m] = .. 2023. 1. 9.
[백준/파이썬] 10866번: 덱 https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 파이썬 deque 라이브러리로 충분히 풀 수 있다. from collections import deque import sys n = int(sys.stdin.readline()) q = deque() for _ in range(n): order = sys.stdin.readline() a = order.split() if a[0] == "push_back": q.append(a[1.. 2023. 1. 9.
[백준/파이썬] 11866번: 요세푸스 문제 0 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net from collections import deque n, k = map(int, input().split()) q = deque() arr = [] for i in range(1, n + 1): q.append(i) # q가 비어있지 않은경우 실행 while q: # k-1 번 만큼 앞에 숫자를 뒤로 보내줌 for _ in range(k - 1): x = q.popleft() q.append(x) arr.append(q.popleft()) # 정답 출력 print("") brea.. 2023. 1. 7.