본문 바로가기

알고리즘124

전기가 부족해 [백준 10423] - python import sys input = sys.stdin.readline def BOJ10423() : N, M, K = map(int, input().split()) plants = list(map(int, input().split())) graph = [] parent = [i for i in range(N+1)] for _ in range(M) : graph.append(list(map(int, input().split()))) graph.sort(key = lambda x : x[2]) def find_parent(x) : if parent[x] == x : return x y = find_parent(parent[x]) parent[x] = y return y def union_parent(paren.. 2022. 3. 23.
stack 두개로 queue 만들기 stack 두개로 queue를 구현하는 법입니다. class Queue: def __init__(self) : self.main = [] self.temp = [] def isEmpty(self, array): return len(array) == 0 def enqueue(self, value) : self.main.append(value) def dequeue(self) : if self.isEmpty(self.temp) : while self.main : self.temp.append(self.main.pop()) return self.temp.pop() # while self.main : # self.temp.append(self.main.pop()) # value = self.temp.pop() .. 2022. 3. 22.
도시 분할 계획 [백준 1647] - python import sys import heapq input = sys.stdin.readline def BOJ1647() : N, M = map(int, input().split()) graph = [[] for _ in range(N+1)] visited = [False for _ in range(N+1)] for _ in range(M) : A, B, C = map(int, input().split()) graph[A].append([C, B]) graph[B].append([C, A]) def prim() : result = [] queue = [] queue.append((0, 1)) while queue : curr_cost, curr_node = heapq.heappop(queue) if visit.. 2022. 3. 22.
최소 스패닝 트리 [백준 1197] - python # 크루스칼 알고리즘 import sys import heapq input = sys.stdin.readline def BOJ1197() : V, E = map(int, input().split()) parent = [i for i in range(V+1)] l = [] def find_parent(x) : if parent[x] == x : return x else : y = find_parent(parent[x]) parent[x] = y return y def union_parent(a, b) : parent_a = find_parent(a) parent_b = find_parent(b) if parent_a > parent_b : parent[parent_b] = parent_a else : pa.. 2022. 3. 21.
네트워크 연결 [백준 1922] - python import sys input = sys.stdin.readline def BOJ1922() : N = int(input()) M = int(input()) # 각 node에서 처음 부모는 자신 node들 입니다 parent = [i for i in range(N+1)] def find_parent(x): if (x == parent[x]): return x else: y = find_parent(parent[x]) parent[x] = y return y def union_parent(a, b) : parent_a = find_parent(a) parent_b = find_parent(b) if parent_a > parent_b : parent[parent_b] = parent_a else : par.. 2022. 3. 20.
동전 1 [백준 2293] - python import sys input = sys.stdin.readline def BOJ2293() : n, k = map(int, input().split()) l = [] for _ in range(n) : l.append(int(input())) dp = [0 for _ in range(k+1)] dp[0] = 1 for i in l : for j in range(1, k+1) : if j - i >= 0 : dp[j] += dp[j-i] print(dp[-1]) BOJ2293() 접근방법 : 1. dp 배열은 가치별 경우의 수를 나타낸다 ex) dp[10]은 주어진 동전들을 이용하여 10을 만들 수 있는 경우의 수 1, 2, 5을 예로 들면 6의 가치를 만드는 방법은 5를 구성했던 경우의 수에서 1을 하.. 2022. 3. 19.