ํฐ์คํ ๋ฆฌ ๋ทฐ
ํ๋ก๊ทธ๋๋จธ์ค: ๋คํธ์ํฌ
dirmathfl 2020. 8. 31. 19:04๋ฌธ์
๋ฌธ์ ํ์ด
๋คํธ์ํฌ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ํตํด ๋ช ๊ฐ์ ๋คํธ์ํฌ๊ฐ ์กด์ฌํ๋์ง ํ๋จํ๋ ๋ฌธ์ ์ด๋ค. BFS๋ก ํ ์ ์๋ ๋ฌธ์ ์ด๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์๋ค.
์์ #1
- ๋ ธ๋ 1์ 2๋ฒ๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ค.
- ๋ ธ๋ 2๋ 1๋ฒ๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ค.
- ๋ ธ๋ 3์ ๋ค๋ฅธ ๋ ธ๋์ ์ฐ๊ฒฐ๋์ด ์์ง ์๋ค.
- ๋ฐ๋ผ์ ๋คํธ์ํฌ์ ๊ฐ์๋ 2์ด๋ค.
์์ #2
- ๋ ธ๋ 1, 2, 3์ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
- ๋ฐ๋ผ์ ๋คํธ์ํฌ ๊ฐ์๋ 1์ด๋ค.
์ด์ ๊ฐ์ ์ฐ๊ฒฐ์ ๋ฐ๋ผ ๋คํธ์ํฌ ๊ฐ์๋ฅผ ์ฒดํฌํ๊ธฐ ์ํด์๋, ๊ฐ ๋ ธ๋๋ฅผ ์์์ผ๋ก ํ์ฌ ํ์์ ์งํํ๊ณ `visited`๋ฅผ ์ฒดํฌํ์ฌ ์ถ๊ฐ์ ์ผ๋ก ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ฉด ๋๋ค. ํด๋น ๋ฐฉ์์ผ๋ก ํ์ํ๊ฒ ๋๋ฉด, `์์ #1`์ ๊ฒฝ์ฐ ๋ ธ๋ 1, ๋ ธ๋ 2๋ฅผ ์์์ผ๋ก ํ์ํ ๊ฒฝ์ฐ ํ๋์ ๊ฒฝ๋ก์ ๋ํ ํ์์ด๊ธฐ์ ๊ฒฝ์ฐ์ ์๊ฐ 1 ์ถ๊ฐ๋๊ณ , ๋ ธ๋ 3์ ์์์ผ๋ก ํ์ํ ๊ฒฝ์ฐ์ ํ๋์ ๊ฒฝ๋ก์ ๋ํ ํ์์ด ๊ฐ๋ฅํ๋ฏ๋ก ์ด 2๊ฐ์ ๋คํธ์ํฌ๋ฅผ ์ฐพ์ ์ ์๋ค.
์ฝ๋
from collections import deque
def bfs(computers, visited, start):
q = deque()
q.append(start)
while q:
node = q.popleft()
if not visited[node]:
visited[node] = 1
for connect_node in range(len(computers)):
if not visited[connect_node] and computers[node][connect_node]:
q.append(connect_node)
def solution(n, computers):
answer = 0
visited = [0] * n
while not all(visited):
for node in range(n):
if not visited[node]:
bfs(computers, visited, node)
answer += 1
return answer
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค: ์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2020.09.01 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค: ํ๊ฒ ๋๋ฒ (0) | 2020.08.31 |
ํ๋ก๊ทธ๋๋จธ์ค: ๋จ์ด ๋ณํ (0) | 2020.08.31 |
ํ๋ก๊ทธ๋๋จธ์ค: ์ฌํ ๊ฒฝ๋ก (0) | 2020.08.31 |
ํ๋ก๊ทธ๋๋จธ์ค: ์์ฅ (0) | 2020.06.10 |