| ps | |
|---|---|
| 링크 | programmers.co.kr/… |
| 출처 | 프로그래머스 |
| 문제 번호 | 62050 |
| 문제명 | 지형 이동 |
| 레벨 | Level 4 |
| 분류 |
그래프, 최소 신장 트리 |
| 시간복잡도 | O(N^2*logN) |
| 인풋사이즈 | N<=300 |
| 사용한 언어 | Python |
| 해결날짜 | 2020/12/11 |
"""Solution code for "Programmers 62050. 지형 이동".
- Problem link: https://programmers.co.kr/learn/courses/30/lessons/62050
- Solution link: http://www.teferi.net/ps/problems/programmers/62050
"""
from teflib import tgraph
def solution(land, height):
size = len(land)
wgraph = [{} for _ in range(size * size)]
for r in range(size):
for c in range(size):
n = r * size + c
if c < size - 1:
diff = abs(land[r][c] - land[r][c + 1])
cost = (0 if diff <= height else diff)
wgraph[n][n + 1] = wgraph[n + 1][n] = cost
if r < size - 1:
diff = abs(land[r][c] - land[r + 1][c])
cost = (0 if diff <= height else diff)
wgraph[n][n + size] = wgraph[n + size][n] = cost
return tgraph.minimum_spanning_tree(wgraph)