0. 문제 링크
https://www.acmicpc.net/problem/1507
1. 풀이 방법
2. 코드
import sys
from itertools import permutations
input = sys.stdin.readline
def sol():
flag = [[True] * n for _ in range(n)]
for i, j, k in permutations([*range(n)], 3):
if maps[i][k] == maps[i][j] + maps[j][k]:
flag[i][k] = False
elif maps[i][k] > maps[i][j] + maps[j][k]:
return -1
else:
val = 0
for i in range(n):
for j in range(i, n):
if flag[i][j]:
val += maps[i][j]
return val
if __name__ == "__main__":
n = int(input())
maps = [list(map(int, input().split())) for _ in range(n)]
print(sol())
3. 마무리
'Computer Science > 알고리즘' 카테고리의 다른 글
[백준 - Python] 17404 - RGB 거리 2 (0) | 2023.03.27 |
---|---|
[백준 - Python] 14267 - 회사 문화 1 (0) | 2023.03.27 |
[백준 - Python] 7453 - 합이 0인 네 정수 (0) | 2023.03.27 |
[백준 - Python] 3584 - 가장 가까운 공통 조상 (0) | 2023.03.27 |
[백준 - Python] 2141 - 우체국 (0) | 2023.03.11 |