본문 바로가기

자료구조19

자료구조 2024. 12. 12.
멱집합 알고리즘 def binAdd(a): n = len(a) curPos = n-1 while True: a[curPos] = (a[curPos] + 1) % 2 if a[curPos] == 0: curPos -= 1 else: break return a x = ['a', 'b', 'c']n = len(x)bin = [0] * n for i in range(2**n - 1): _tmp = binAdd(bin) powerSet = [] for j in range(n): if _tmp[j] == 1: powerSet.append(x[j]) print(p.. 2024. 12. 12.
탐욕 알고리즘 coins = [500, 100, 50, 10, 5, 1]x = int(input())return_coins = []remain = xwhile remain > 0: for coin in coins: if coin 2024. 12. 6.
분할정복 a = # 큰 수b = # 작은 수while b > 0: print(a, b) r = a % b a = b b = rprint(a, b) 2024. 12. 6.
크루스컬 알고리즘 def kruskal(self): self.graph.sort(key = lambda t: t[2]) tree = [] nEdge = 0 i = 0 while nEdge 2024. 12. 6.
BFS 예제 def minPath(self): Queue = [] parentsQueue = [] Queue += self.graph[self.start] parentsQueue += [self.start] * len(self.graph[self.start]) visits = [self.start] parents = ['None'] while Queue: item = Queue.pop(0) temp = parentsQueue.pop(0) if not item in visits: Queue += self.graph[item] parentsQueue += [item] * len(self.graph[item].. 2024. 12. 6.
BFS def bfs(self): visit = [self.start] for item in self.graph[self.start]: self.q.push(item) while self.q.isEmpty() == False: item = self.q.pop() if not item in visit: for _item in self.graph[item]: self.q.push(_item) visit.append(item) return visit 2024. 12. 6.
이진 탐색 트리 • 삽입 알고리즘def _insert(self, curNode, item): if curNode == None: curNode = BNode(item) elif item = curNode.item: curNode.right = self._insert(curNode.right, item) return curNode • 탐색 알고리즘def _search(self, curNode, item): if curNode == None: print("item not found") elif item == curNode.item: return curNode elif item curNode.item: return self._se.. 2024. 12. 6.
Max Heap의 push method def _exchange(self, i, j): if self.x[i] = 1: self._exchange(pIndex, cIndex) cIndex = pIndex pIndex = cIndex // 2 2024. 12. 6.
탐욕 알고리즘, 최소 비용 신장 트리 2024. 12. 5.