목록CS/Algorithm (4)
지우너
크루스칼 알고리즘 (Kruskal Algorithm)MST를 구하는 알고리즘 중 하나 크루스칼 알고리즘을 이용하는 예시N개의 도시가 있는데, 그래프 구조로 되어 있는 길을 모두 건설할 돈이 없어서 최소한의 비용만 투자하여 모든 도시를 어떻게든 이어주려고 합니다. 관련 개념Spanning Tree: 최소한의 간선을 사용하여 모든 정점을 연결한 그래프MST(Minimum Spanning Tree): 가중치가 있을때 최소한의 비용을 사용한 Spanning Tree. 트리이기 때문에 사이클이 존재하면 안 됨.→ Union-Find를 이용하여 사이클 유무 판별 크루스칼 알고리즘 구현 방법간선들을 저장한 후가중치를 오름차순으로 정렬간선 목록(vector, list, array 등)을 순회하면서 가중치가 작은 순으..
시간 복잡도 속도 비교$$O(1) 참고 사이트https://youtu.be/tTFoClBZutw?si=znIYgtec2_8Rwveahttps://www.youtube.com/watch?v=0b2VU45xmDk
그래프의 가중치가 없거나, 모든 간선의 가중치가 동일하다면 BFS를 이용하여 최단거리를 구할 수 있다.왜 쓰는가?그런데 가중치가 다를 경우, BFS를 이용하여 최단거리를 구하는 데에 어려움이 있다.이를 해결하기 위해 나온 알고리즘 중 하나가 다익스트라 알고리즘 언제 쓰는가?어떤 점에서 다른 모든점으로 가는 최단거리를 구할 때1~5까지의 점이 있고, 1에서 출발한다고 가정. 1-2의 최단거리, 1-3의 최단거리, 1-4의 최단거리, 1-5의 최단거리를 구할 수 있다는 의미 어떻게 쓰는가?기본 개념어떤 정점에서 시작해서 각 정점으로 가는 최단 거리를 구해야 한다. dist를 저장할 자료구조를 선택하고 시작 정점을 0, 나머지 정점을 inf로 초기화한다.(3번에서 시작한다고 가정했을 때, 3번으로 가는 최단거..
요약(C++ 코드) 10진수→2진수 #include #include #include using namespace std; int main() { vector binary; int n; cin >> n; if (n==0) binary.push_back(0); else if (n==1)binary.push_back(1); else{ while(n){ int disit = n%2; binary.push_back(disit); n/=2; } } reverse(binary.begin(), binary.end()); for(auto e : binary){ cout >binary; int answer=0; for (int i=binary.length()-1 ;i>=0; i--){ int num = binary[i]-..