union 2

[백준/알고리즘/python/java] 1976번 - 여행 계획

이 문제는 유니온-파인드 집합 문제입니다. DFS나 BFS로 풀 때, 유의해야 할 점은 결국 자기자신으로 돌아오는 여행루트도 존재한다는 점입니다. 가장 직관적이게 풀 수 있는 알고리즘은 union-find 인데요, 여행계획이 어떻게 주어지더라도 결국 여행이 가능하려면, 각 도시는 같은 사이클에 존재해야 한다는 전제가 있어야 합니다. 하나의 사이클에 같이 존재하지 않는다면, 다시말해 어떠한 도시에서 어떤 도시로 갈 수 있는 방법이 존재하지 않는다면, 여행은 불가능하겠죠. 풀이는 코드를 토대로 설명드리겠습니다. import sys input = sys.stdin.readline def find_parent(parent,x): if parent[x] != x: return find_parent(parent,p..

그래프 알고리즘 1 - 코딩 테스트에서 자주 등장하는 기타 그래프 이론

'DFS/BFS'와 '최단 경로'에서 다룬 내용도 그래프 알고리즘의 한 유형으로 볼 수 있다. 그래프 알고리즘은 코딩 테스트에서 출제 비중이 낮은 편이지만, 출제되기 때문에 기타 그래프 알고리즘도 살펴볼 필요가 있다. 지금부터 다룰 알고리즘은 앞서 배운 내용에 기반하는데, 예를 들어 크루스칼 알고리즘(Kruskal Algorithms)은 그리디 알고리즘으로 분류되고, 위상 정렬 알고리즘(Topology Algorithms)은 앞서 배운 큐 자료구조 혹은 스택 자료구조를 활용해야 구현할 수 있다. 복습을 해보자면, 그래프란 노드와 간선의 정보를 가지고 있는 자료구조이고, 알고리즘 문제에서 '서로 다른 개체가 연결되어 있다'는 얘기가 있다면 가장 먼저 그래프 알고리즘을 떠올려야 한다. 더불어, 그래프 자료구..

반응형