๋ฐ์ํ
๋ฌธ์
ํ์ด
๋ชจ๋ ์ปดํจํฐ๋ฅผ ๋๋ฉด์ ๋ฐฉ๋ฌธ ์ํ ์์น์ ๋ฐฉ๋ฌธํ์ฌ DFS๋ฅผ ์ํํ์ฌ ํ ์ ์๋ค.
ํ๋์ DFS๊ฐ ์ข ๋ฃ๋๋ฉด +1 ํด์ ๋คํธ์ํฌ ์๋ฅผ ๊ณ์ฐํ๊ณ , DFS ํจ์๋ ํด๋น ์์น๋ฅผ ๋ฐฉ๋ฌธ์ฒ๋ฆฌํ๊ณ ๋ชจ๋ ์ปดํจํฐ๋ฅผ for๋ฌธ์ผ๋ก ํ์ธํ๋ฉด์ ์๊ธฐ ์์ ์ด ์๋๊ณ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒฝ์ฐ ๊ทธ๋ฆฌ๊ณ ๋ฐฉ๋ฌธ์ ์ํ ๊ฒฝ์ฐ์ DFS๋ก ๋ฐฉ๋ฌธ์ฒ๋ฆฌํ๋ค.
์ฝ๋
def solution(n, computers):
answer = 0
visited = [False]*n # ์ปดํจํฐ ๊ฐ์ ๋งํผ
for com in range(n): # ๊ฐ ์ปดํจํฐ๋ฅผ ๋๋ฉด์ ๋ฐฉ๋ฌธ ์ํ์ผ๋ฉด DFS
if visited[com] == False :
DFS(n, computers, com, visited)
answer +=1 # ์ฐ๊ฒฐ๋ ํ๋์ ๋คํธ์ํฌ +1
return answer
def DFS(n, computers, com, visited):
visited[com] = True # ๋ฐฉ๋ฌธ์ฒ๋ฆฌ
for connect in range(n): # ์ปดํจํฐ ๊ฐ์๋งํผ for๋ฌธ ๋๋ฉด์
if connect != com and computers[com][connect] == 1: # ์๊ธฐ ์์ ์ด ์๋๊ณ com๊ณผ connect๊ฐ ์ฐ๊ฒฐ๋์ด ์๊ณ
if visited[connect] == False : # ๋ฐฉ๋ฌธ ์ํ์ผ๋ฉด
DFS(n, computers, connect, visited) # DFS
๋ฐ์ํ
'๐ป Programming > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ํ๋ก๊ทธ๋๋จธ์ค_ํ๊ฒ๋๋ฒ (DFS&BFS) (0) | 2022.02.06 |
---|---|
[python] ํ๋ก๊ทธ๋๋จธ์ค_๋จ์ด๋ณํ (DFS&BFS) (0) | 2022.02.06 |
[python] ๋ฐฑ์ค18405_๊ฒฝ์์ ์ ์ผ (DFS&BFS) (0) | 2022.02.06 |
[python] ๋ฐฑ์ค18352_ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (DFS&BFS) (0) | 2022.02.06 |
[python] ๋ฐฑ์ค14502_์ฐ๊ตฌ์ (DFS&BFS) (0) | 2022.02.06 |