크루스칼

알고리즘/프로그래머스

[프로그래머스] 섬 연결하기(LV3 - Python)

해당 글에서는 섬 연결하기 문제를 Python을 이용해 풀이하고자 한다. 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 🔷 문제 설명더보기 🔷 문제 풀이사실 누가 봐도 최소 신장 알고리즘으로 풀이하는 문제이다. n개의 섬이 모두 연결되도록 다리가 연결이 돼야 하며, 최소 비용이 돼야하기 때문이다.하지만 이 문제를 처음 마주했을 때, 최소 신장 알고리즘을 알지도 못했다. 분명히 학부 수업에서 배웠으나 기억조차 나지 않았다. 따라서 다시 공부하는 시간을 가졌다. 혹시나 크루스칼 알고리즘을 모른다면 아래의 글을 참고하도록 하자. [알고리즘] 크루스칼 알고리즘이..

알고리즘

[알고리즘] 크루스칼 알고리즘이란? (최소 신장 트리 찾기)

1️⃣ 신장 트리란?크루스칼 알고리즘은 '최소 신장 트리 알고리즘'이다. 즉, 최소 신장 트리를 찾기 위한 알고리즘이라는 것이다.최소 신장 트리란 신장 트리 중에서 최소 비용으로 만들 수 있는 신장 트리를 의미한다. 크루스칼 알고리즘을 설명하기 전에 신장 트리에 대해 설명을 하고 넘어가겠다. 신장트리란 하나의 그래프가 있을 때 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프를 의미한다.모든 노드가 포함되어 서로 연결되면서 사이클이 존재하지 않는다는 조건은 트리의 성립 조건에 해당한다. 따라서 이런 그래프를 신장 트리라고 부르는 것이다. 신장 트리는 동일한 그래프에서도 여러 개의 신장트리를 찾을 수 있다. 하지만 가능한 한 최소한의 비용으로 신장 트리를 찾아야 하는 상황이 존재한다.따라서 신장 ..

당찬 뱁새
'크루스칼' 태그의 글 목록