지형 이동

송지용·2020년 1월 16일
0

algorithm

목록 보기
38/50

https://programmers.co.kr/learn/courses/30/lessons/62050

  • flow
  1. 가장 먼저 너비 우선 탐색(bfs)를 이용해 region growing 하듯이 사다리가 필요없는 그룹끼리 같은 노드로 묶는 작업이 필요하다. (dfs도 상관 없음)
  2. 이후 그룹을 노드라고 생각하고 그래프를 만든다 생각해보면, 높이차가 간선(edge) 가중치이고, 이에 따라 수많은 간선들이 나타나게 되는데 2개의 노드 사이에는 가장 작은 값인 edge 를 제외하고 고려하지 않아도 되므로 그래프 간소화 작업이 필요하다.
  3. 그렇게 만든 그래프를 가지고 minimum spanning tree(mst)를 만들어 비용합을 구하면 답이 된다. 이 때 쓰이는 알고리즘은 흔히 prim 또는 kruskal이 있다. (모두 greedy한 방법)

필자는 예전 문제때 짰던 kruskal 을 그대로 이용했는데 성능 개선을 위해선 더 세심한 코딩이 필요하다. 시간복잡도가 O(N^2) 이라 그런지 몇가지 케이스에 대해 시간 초과가 나온다. 시간복잡도를 개선할 방법이 떠오르지 않아 단순 코드 최적화는 일단 넘어가기로 했다.

0개의 댓글