[BOJ] [Python] 4358 : 생태학
트라이를 이용해 해결했다. 시간복잡도는 O(N * M)이다. (N : 최대 그루 수, M : 최대 이름 길이) 입력이 N은 1,000,000, M은 30이니까, 30,000,000으로 1초내 수행이 가능하다. (문자열 탐색 알고리즘을 사용하지 않으면 O(N * N * M)이라 시간 초과이다.) import sys class Node(object): def __init__(self, key, data=None): self.key = key self.data = data self.children = {} class Trie(object): def __init__(self): self.head = Node(None) def insert(self, string): curr_node = self.head for ..
[BOJ] [Python] 1197 : 최소 스패닝 트리
최소 신장 트리를 만들기 위해 프림 알고리즘을 사용했다. import sys import heapq input = sys.stdin.readline V, E = map(int, input().split()) graph = [[] for i in range(V + 1)] for _ in range(E): A, B, C = map(int, input().split()) graph[A].append((C, (A, B))) graph[B].append((C, (B, A))) count = 0 dp = [0] * (V + 1) order = [] now_node = 1 # 시작 노드 result = 0 # 가중치 합 for edge in graph[1]: heapq.heappush(order, edge) whil..