ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: ์ฌ ์ฐ๊ฒฐํ๊ธฐ
dirmathfl 2020. 9. 2. 13:54๋ฌธ์
๋ฌธ์ ํ์ด
n๊ฐ์ ์ฌ ์ฌ์ด์ ๋ค๋ฆฌ๋ฅผ ๊ฑด์คํ๋ ๋น์ฉ์ด ์ฃผ์ด์ง ๋, ๋ชจ๋ ์ฌ์ด ํตํ ๊ฐ๋ฅํ ์ต์ ๋น์ฉ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ์ด ๋ฌธ์ ๋ ์ ํ์ ์ธ `Kruskal ์๊ณ ๋ฆฌ์ฆ` ๋ฌธ์ ์ด๋ค. ํด๋น ์๊ณ ๋ฆฌ์ฆ ์์ฒด๊ฐ ์ฌ์ดํด์ ์ด๋ฃจ์ง ์๊ณ , ์ต์ ๋น์ฉ์ ์ฐพ๋ ๊ฒ์ด๋ค. ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฌธ์ ์์๋ "๋ค๋ฆฌ๋ฅผ ์ฌ๋ฌ ๊ฐ ๊ฑด๋๋๋ผ๋ ํด๋น ์ฌ์ ๋ฐฉ๋ฌธํ ์ ์์ผ๋ฉด ๋๋ค."๋ผ๋ ์กฐ๊ฑด์ด ์ฃผ์ด์ง๋ค. ๋ฐ๋ผ์ ๊ฐ ๋ ธ๋์ ๋น์ฉ(๊ฑด์คํ๋ ๋น์ฉ)์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ํ, ๋ฐฉ๋ฌธ ์ฌ๋ถ์ ๋ฐ๋ผ ํ์ฌ์ ๋น์ฉ์ ๊ฐฑ์ ํ๋ฉด ๋๋ค.
์ฃผ์ด์ง ์์๋ฅผ Kruskal๋ก ํ์ํ๊ฒ ๋๋ฉด ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ์์๋ก ํ์ํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ต์ ๋น์ฉ 4๋ฅผ ๊ตฌํ ์ ์๋ค.
์ฝ๋
def solution(n, costs):
answer = 0
costs.sort(key=lambda x: x[2])
visited = [True] + [False] * (n - 1)
while not all(visited):
for cur_node, next_node, cost in costs:
print(visited)
if visited[cur_node] and visited[next_node]:
continue
if visited[cur_node] or visited[next_node]:
visited[cur_node] = visited[next_node] = True
answer += cost
break
return answer
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2020.09.02 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ๊ฐ์ฅ ๋จผ ๋ ธ๋ (0) | 2020.09.02 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋ ๋ฐ๋จน๊ธฐ (0) | 2020.09.01 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2020.09.01 |
ํ๋ก๊ทธ๋๋จธ์ค: ํ๊ฒ ๋๋ฒ (0) | 2020.08.31 |