본문 바로가기

반응형

코딩 이야기/백준 풀이

(51)
백준 2109번: 순회강연 파이썬 코드(우선순위 큐) #2109 import sys import heapq heap = [] days = [0 for _ in range(10001)] n = int(sys.stdin.readline()) for _ in range(n): p,d = map(int, sys.stdin.readline().split()) heapq.heappush(heap, [p,d]) heap2 = [] for _ in range(len(heap)): heap2.append(heapq.heappop(heap)) money = 0 while len(heap2) > 0: temp = heap2[-1] del heap2[-1] if days[temp[1]] != 0: while 1: temp[1] = temp[1] - 1 if temp[1] == ..
백준 1715번: 카드 정렬하기 파이썬 코드(우선순위 큐) #1715 import heapq import sys n = int(sys.stdin.readline()) heap = [] carculate = [] for _ in range(n): card = int(sys.stdin.readline()) heapq.heappush(heap, card) while len(heap) > 1: temp1 = heapq.heappop(heap) temp2 = heapq.heappop(heap) carculate.append(temp1 + temp2) heapq.heappush(heap,temp1 + temp2) print(sum(carculate)) 설명 숫자끼리 더하면서 생기는 연산을 모았다가 더하면 되는 문제이다. 다만 적은 수끼리 더하는 것이 연산이 적기 때문에, ..
백준 11000번: 강의실 배정 파이썬 코드(우선순위 큐) import heapq import sys n = int(sys.stdin.readline()) heap = [] q = [] count = 0 for _ in range(n): start, end = map(int,sys.stdin.readline().split()) heapq.heappush(heap, [start,end]) start, end = heapq.heappop(heap) heapq.heappush(q, end) while heap: start, end = heapq.heappop(heap) if q[0]
백준 1374번: 강의실 파이썬 코드(우선순위 큐) import heapq import sys n = int(sys.stdin.readline()) heap = [] q = [] count = 0 for _ in range(n): num, start, end = map(int,sys.stdin.readline().split()) heapq.heappush(heap, [start,end,num]) start, end, num = heapq.heappop(heap) heapq.heappush(q, end) while heap: start, end, num = heapq.heappop(heap) if q[0]
백준 1342번: 행운의 문자열 파이썬코드(백트래킹) s = input() s = list(s) su = len(s) count = 0 alphabet = [0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0] for i in range(len(s)): alphabet[ord(str(s[i])) - 97] += 1 def backtracking(l, p): global count if l == 0: count += 1 for i in range(26): if alphabet[i] > 0 and i != p: alphabet[i] -= 1 backtracking(l-1, i) alphabet[i] += 1 else: pass backtracking(su, -1) print(count)
백준 1717번: 집합의 표현 파이썬 코드(유니온파인드, Union-find) import sys n, m = map(int, sys.stdin.readline().split()) parent = [i for i in range(n+1)] def find(x): if parent[x] == x: return x return find(parent[x]) def union(x, y): x = find(x) y = find(y) if x != y: if y > x: parent[y] = x else: parent[x] = y return def same(x, y): x = find(x) y = find(y) if x == y: print("YES") else: print("NO") return for i in range(m): a,b,c = map(int, sys.stdin.readli..
백준 4485번: 녹색 옷 입은 애가 젤다지? 파이썬 코드(다익스트라) import sys import heapq INF = sys.maxsize x = [0,0,-1,1] y = [-1,1,0,0] count = 0 while 1: n = int(sys.stdin.readline()) count += 1 visited = [[0 for _ in range(n)]for _ in range(n)] if n == 0: break graph = [] dist = [[INF for _ in range(n)] for _ in range(n)] for i in range(n): temp = list(map(int, sys.stdin.readline().split())) graph.append(temp) heap = [] heapq.heappush(heap, [graph[0][0],[0..
백준 1261번: 알고스팟 파이썬 코드(다익스트라) import sys import heapq INF = sys.maxsize x = [0,0,-1,1] y = [-1,1,0,0] n,m = map(int, sys.stdin.readline().split()) visited = [[0 for _ in range(n)]for _ in range(m)] graph = [] dist = [[INF for _ in range(n)] for _ in range(m)] for i in range(m): temp = list(input()) temp = [int(i) for i in temp] graph.append(temp) heap = [] heapq.heappush(heap, [graph[0][0],[0,0]]) while heap: cost, now = hea..

반응형