목록전체 글 (47)
Adore__

Source: inflearn 'Do it! 알고리즘 코딩테스트 with python' 최소 신장 트리란, 그래프의 모든 노드를 한번씩 방문할 때, 거쳐가는 edge들의 가중치의 합이 최소가 되도록 하는 트리이다. ▪️특징 - 트리이므로 사이클을 포함하지 않는다. (만약 모든 노드를 연결해서 순환되는 구조가 만들어지면, 최소의 가중치가 될 수 없다. 하나의 엣지를 제거하더라도 모든 노드를 거치는 경로를 만들 수 있기때문이다.) - N개의 node가 있으면, MST를 구성하는 edge의 수는 N-1개이다. - 구현하는 방법은 크루스칼 / 프림 알고리즘이 있다. * 크루스칼 알고리즘 * 프림 알고리즘 크루스칼은 처음부터 모든 간선의 가중치를 오름차순으로 정렬한 후에 작은 가중치의 간선부터 연결하지만, 프림 ..

Source: inflearn 'Do it! 알고리즘 코딩테스트 with python' Union-Find는 말 그대로 두개의 연산으로 구성되어 있는 알고리즘이다. ▪️수학적 연산 기법 ▷ Union 연산: 각 node가 속한 집합을 1개로 합치는 연산. node a, b가 각각 집합 A,B에 속할 때, union(a,b)는 A U B를 말한다. 우리가 집합연산에서 배웠던 합집합과 같다. ▷ Find 연산: 특정 노드 a가 속한 집합의 대표 node를 반환해준다. 노드 a가 A집합에 속할 때, find(a) 는 A집합의 대표 노드(루트 노드)를 반환한다. ▪️그림으로 과정 이해하기 union-find는 집합을 표현하는 배열, 리스트, 트리로 표현할 수 있지만, 우선 빠른 이해를 위해 1차원 배열로 살펴보..

Source: inflearn 'Do it! 알고리즘 코딩테스트 with python' 최단 거리를 구하는 알고리즘으로, 특정 노드에서 다른 노드까지 최단 거리는 몇인가?라는 문제에서 사용한다. 딴, edge의 가중치가 양수여야 한다. 기능 특징 시간 복잡도(node:V, edge:E) 출발 노드에서 모든 노드간의 최단 거리 탐색 Egde의 가중치는 모두 양수여야 한다. O(E*logV) ▪️과정 1. 인접 리스트로 그래프 구현 인접 행렬도 가능하지만, 시간복잡도를 고려할 때 N의 크기가 커지는 것을 방지하기 위해 인접 리스트를 선택하자. 2. 최단 거리 배열 초기화 최단거리를 저장해주는 배열을 노드 개수만큼 만든다. 에서 출발하므로 노드1까지의 최단거리는 0, 그리고 나머지 노드들의 최단거리는 무한대(..