https://programmers.co.kr/learn/courses/30/lessons/72413
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ํฉ์น ํ์ ์๊ธ
6 4 6 2 [[4, 1, 10], [3, 5, 24], [5, 6, 2], [3, 1, 41], [5, 1, 24], [4, 6, 50], [2, 4, 66], [2, 3, 22], [1, 6, 25]] 82 7 3 4 1 [[5, 7, 9], [4, 6, 4], [3, 6, 1], [3, 2, 3], [2, 1, 6]] 14 6 4 5 6 [[2,6,6], [6,3,7], [4,6,7], [6,5,11], [2,5,12], [5,3,20], [2,4
programmers.co.kr
ํ์ด
2021 ์นด์นด์ค ๋ฌธ์ ๋ก ๋์จ ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํธ๋ ๋ฌธ์ ์ด๋ค.
์ฝ์๋ง์ ํ๋ก์ด๋ ์์ฌ ๋ฌธ์ ์์ ์์์ฐจ๋ ธ๊ณ , ์ ํ์ ์ธ ๋ฌธ์ ๋ผ ๋ฑํ ํ์ด ์ค๋ช
์ด ์กด์ฌํ์ง ์๋๋ค.
def solution(n, s, a, b, fares):
# ํ๋ก์ด๋ ์์ฌ, ๋ชจ๋ ์ ์ ์ผ๋ก๋ถํฐ์ ์ต์ ๊ฑฐ๋ฆฌ ๊ตฌํ๊ณ
# ( ์์์ + x ) + ( x ~ A์ ๋์ ) + (x ~ B์ ๋์ ) ๊ตฌํด์ฃผ๋ฉด ๋ ๋ฏ
INF = 10987654321
answer = INF
# ์ด๊ธฐํ
dist = [[ INF for _ in range(n+1)] for _ in range(n+1) ]
for i in range(1, n+1):
dist[i][i] = 0
for (st, ed, w) in fares:
dist[st][ed] = w
dist[ed][st] = w
# ํ๋ก์ด๋ ์์ฌ
for k in range(1, n+1):
for i in range(1, n+1):
for j in range(1, n+1):
if dist[i][j] > dist[i][k] + dist[k][j]:
dist[i][j] = dist[i][k] + dist[k][j]
# ๋ต ๊ตฌํจ
for i in range(1, n+1):
answer = min(answer, dist[s][i] + dist[i][a] + dist[i][b])
return answer
'Problem Solving ๐ฅ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ธฐ์ง๊ตญ ์ค์น / ํ์ด์ฌ (0) | 2021.01.29 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ณด์ ์ผํ / ํ์ด์ฌ / ํฌ ํฌ์ธํฐ (0) | 2021.01.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์นด๋ ์ง ๋ง์ถ๊ธฐ / ํ์ด์ฌ (2) | 2021.01.25 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฉ๋ฌธ ๊ธธ์ด / ํ์ด์ฌ (0) | 2021.01.24 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ผ๊ทผ ์ง์ / ํ์ด์ฌ (0) | 2021.01.24 |