문제: https://programmers.co.kr/learn/courses/30/lessons/62050
최소 설치비용을 만족하려면 두 가지 조건을 만족해야 합니다.
1. 최소의 사다리 개수
2. 사다리를 놓을 수 있는 위치들 중에 최소비용인 위치
1번에 대해 생각해보면 사다리 없이 이동할 수 있는 지점이 N개라고 하면 N-1개의 사다리만 놓으면
N개의 지점은 모두 연결이 됩니다. 여기서 이 문제가 MST 문제임을 알 수 있습니다.
2번에 대해서는 각 컴포넌트 중에서 경계점에 있는 좌표에 대해 엣지를 구합니다.
Edge(현재 컴포넌트 번호, 연결되어있는 컴포넌트 번호, 사다리 비용)
이 엣지를 우선순위 큐에 넣고 작은 비용의 사다리부터 뽑도록 크루스칼 알고리즘을 돌리면
여기서 뽑혀나온 N-1개의 엣지가 최소 설치비용이 됩니다.
코드: https://github.com/cottory/algorithm/blob/master/PROGRAMMERS/summer_winter12.cc
'Algorithm > Programmers' 카테고리의 다른 글
[코딩테스트 연습] 섬 연결하기 (0) | 2020.06.11 |
---|---|
[코딩테스트 연습] 단어 변환 (0) | 2020.06.11 |
[코딩테스트 연습] 점프와 순간이동 (0) | 2020.05.15 |
[코딩테스트 연습] 영어 끝말잇기 (0) | 2020.05.15 |
[코딩테스트 연습] 예산 (0) | 2020.05.15 |