목차

지형 이동

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)