목록강의수강/[자료구조|알고리즘] (4)
미소를뿌리는감자의 코딩
call by value와 call by reference는 인자를 전달해주는 방식에 차이를 두고 있습니다. 우선 call by value는 함수에 인자를 전달해 줄 때, 인자를 복사해서 전달해주는 방식을 의미합니다. 이에 메모리 또한 추가적으로 사용한다는 점이 있습니다. 하지만, 함수에서 값을 변경하더라도 원본에는 영향을 미치지 않기 때문에 상대적으로 안전하다고 할 수 있습니다. 반대로 call by reference는 함수에 인자를 전달해 줄 때, 참조값을 전달해주는 것을 의미합니다. 즉, 인자로 전달하고자 하는 변수의 주소값을 전달해주는 것을 의미합니다. 따로 메모리를 사용하여 변수를 할당하지 않아도 되기 때문에, 메모리를 추가적으로 사용하지 않아도 된다는 장점이 있습니다. 오랜만에 call by ..
1. Prim's Algorithm 2. Kruskal's Algorithm 3. Prim vs. Kruskal 1. prim's Algorithm 프림 알고리즘에 대한 설명은 아래 문제에 자세히 적어두었다. https://potatoscatteringsmile.tistory.com/112 [백준 2024/02/13] 1922번 네트워크 연결 https://www.acmicpc.net/problem/1922 1922번: 네트워크 연결 이 경우에 1-3, 2-3, 3-4, 4-5, 4-6을 연결하면 주어진 output이 나오게 된다. www.acmicpc.net 1. 접근 방법 이번 문제는 최소 신장 트리를 이용할 수 있는 대 potatoscatteringsmile.tistory.com 2. Kruskal..
힙 -> 완전 이진 트리 이어야함. ; 왼쪽 부터 꽉 채워져 있는 것. index 계산: 계산 편의를 위해 인덱스를 1부터 사용: parent: x. left: 2x. right: 2x + 1 def __len__(self):... def _percolate_up(self): # percolate 스며들다 cur = len(self) parent = cur // 2 # left : 2* cur, right = 2*cur + 1 이므로, parent는 cur//2 while parent > 0: if self.items[cur] > self.items[parent]: self.items[cur], self.items[parent] = self.items[parent], self.items[cur] cur ..
1. 스택 한쪽 끝으로만 자료를 넣고 뺄 수 있는 자료구조. LIFO ( last in first out) 넣은 순서를 쌓아두고 있기 때문에 필요하다. - 구현 : push, pop, is_empty assert Node(1, None).item == 1 -> Node의 item을 꺼내면, 1이라는 값이 나와야 한다. Class Node: def __init__(self, item, next): self.item = item self.next = next -> node의 item 은 item을 의미하고, self.next 나는 다음 노드를 가리킨다. node와 stack의 결합 class Node: def __init_(self, item, next): self.item = item self.next =..