[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ๋คํธ์ํฌ / Python
๐ Problem Solving/Programmers
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋คํธ์ํฌ
๋คํธ์ํฌ๋ ์ปดํจํฐ ์ํธ ๊ฐ์ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋๋ก ์ฐ๊ฒฐ๋ ํํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ปดํจํฐ A์ ์ปดํจํฐ B๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์๊ณ , ์ปดํจํฐ B์ ์ปดํจํฐ C๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์
programmers.co.kr
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
compters = [list(map(int, input().split())) for _ in range(n)]
def bfs(n, computers, v, visited):
queue = deque()
queue.append(v)
visited[v] = True
while queue:
x = queue.popleft()
for i in range(len(computers[x])):
if i == x:
continue
if visited[i] == False and computers[x][i] == 1:
visited[i] = True
queue.append(i)
def solution(n, computers):
answer = 0
visited = [False] * n
for i in range(n):
if visited[i] == False:
bfs(n, computers, i, visited)
answer += 1
return answer
print(solution(n, compters))
ํด์ค
BFS๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ์๋ค.
์ปดํจํฐ์ ๊ฐ์๋งํผ visited ๋ฆฌ์คํธ๋ฅผ False๋ก ์ด๊ธฐํํด ๋ง๋ค์ด์ค๋ค.
visited์์ False์ธ ๊ฐ์ ์ธ๋ฑ์ค๋ BFS๋ก ์ฒ๋ฆฌ๊ฐ ์๋ ๊ฒ์ด๋ฏ๋ก BFS๋ฅผ ์คํํ๋ค. ๊ทธ๋ฌ๋ฉด ํด๋น ์ ์ ๊ณผ ์ฐ๊ฒฐ๋์ด ์๋ ๋ชจ๋ ์ ์ ๋ค์ด ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๊ฐ ๋๊ณ , ๋คํธ์ํฌ๊ฐ ํ๋ ๋์ด๋๋ ๊ฒ์ด๋ค.
'๐ Problem Solving > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ์ด์ค์ฐ์ ์์ํ / Python (0) | 2021.06.18 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ๊ฐ์ฅ ๋จผ ๋ ธ๋ / Python (0) | 2021.06.18 |
[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ๋์คํฌ ์ปจํธ๋กค๋ฌ / Python (0) | 2021.06.17 |
[ํ๋ก๊ทธ๋๋จธ์ค-Lv3] ๋ฒ ์คํธ์จ๋ฒ / Python (0) | 2021.06.16 |
[ํ๋ก๊ทธ๋๋จธ์ค-Lv2] ๋ฉ์ฉกํ ์ฌ๊ฐํ / Python (0) | 2021.06.16 |