2장. 의미 있는 이름
2장을 읽고 나서 내가 깃허브에 정리해놓은 알고리즘 문제 풀이 코드들을 살펴보았다. 아래는 그 중 특히나 2장의 방향성에 어긋났던 소스 코드이다.
#플로이드
n = int(input())
INF = int(1e9)
graph = [[INF]*(n+1) for _ in range(n+1)]
m = int(input())
for _ in range(m):
a, b, c = map(int, input().split())
graph[a][b] = min(graph[a][b], c)
for a in range(1, n+1):
graph[a][a] = 0
for k in range(1, n+1):
for a in range(1, n+1):
for b in range(1, n+1):
graph[a][b] = min(graph[a][b], graph[a][k]+graph[k][b])
for a in range(1, n+1):
for b in range(1, n+1):
if graph[a][b]==INF:
print(0, end=' ')
else:
print(graph[a][b], end=' ')
print()
n, m, a, b, c... 코드 작성자인 본인조차 나중에 다시 코드를 확인할 때 변수의 의미를 파악하는 것에 있어서 어려움을 겪는데, 다른 사람들은 말할 필요도 없겠구나라는 생각이 들었다. 평소에 나만 읽게 될 코드를 작성하는 경우에도 '코드의 단순성'보다 '코드의 함축성'에 신경을 쓰는 습관을 들여야겠다.