[ํ๋ก๊ทธ๋๋จธ์ค | Python] ๋คํธ์ํฌ
๐ ๋ฌธ์ ์ ๋ณด
- ๊ด๋ จ ๊ฐ๋ : BFS, DFS
- ๋์ด๋ : Level 3
- ๋ฌธ์ ๋งํฌ : https://programmers.co.kr/learn/courses/30/lessons/43162
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋คํธ์ํฌ
๋คํธ์ํฌ๋ ์ปดํจํฐ ์ํธ ๊ฐ์ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋๋ก ์ฐ๊ฒฐ๋ ํํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ปดํจํฐ A์ ์ปดํจํฐ B๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์๊ณ , ์ปดํจํฐ B์ ์ปดํจํฐ C๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์
programmers.co.kr
๐ ๋ฌธ์ ์ค๋ช
๋ฌธ์ ์ค๋ช
๋คํธ์ํฌ๋ ์ปดํจํฐ ์ํธ ๊ฐ์ ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋๋ก ์ฐ๊ฒฐ๋ ํํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ปดํจํฐ A์ ์ปดํจํฐ B๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์๊ณ , ์ปดํจํฐ B์ ์ปดํจํฐ C๊ฐ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์์ ๋ ์ปดํจํฐ A์ ์ปดํจํฐ C๋ ๊ฐ์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์ ๋ณด๋ฅผ ๊ตํํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ปดํจํฐ A, B, C๋ ๋ชจ๋ ๊ฐ์ ๋คํธ์ํฌ ์์ ์๋ค๊ณ ํ ์ ์์ต๋๋ค.
์ปดํจํฐ์ ๊ฐ์ n, ์ฐ๊ฒฐ์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด computers๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋คํธ์ํฌ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์์ค.
์ ํ ์ฌํญ
- ์ปดํจํฐ์ ๊ฐ์ n์ 1 ์ด์ 200 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ๊ฐ ์ปดํจํฐ๋ 0๋ถํฐ n-1์ธ ์ ์๋ก ํํํฉ๋๋ค.
- i๋ฒ ์ปดํจํฐ์ j๋ฒ ์ปดํจํฐ๊ฐ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด computers[i][j]๋ฅผ 1๋ก ํํํฉ๋๋ค.
- computer[i][i]๋ ํญ์ 1์ ๋๋ค.
์ ์ถ๋ ฅ ์
n | computers | return |
3 | [[1, 1, 0], [1, 1, 0], [0, 0, 1]] | 2 |
3 | [[1, 1, 0], [1, 1, 1], [0, 1, 1]] | 1 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1
์๋์ ๊ฐ์ด 2๊ฐ์ ๋คํธ์ํฌ๊ฐ ์์ต๋๋ค.

์์ #2
์๋์ ๊ฐ์ด 1๊ฐ์ ๋คํธ์ํฌ๊ฐ ์์ต๋๋ค.

๐ ๋ฌธ์ ํ์ด
๋ฐฉ๋ฒ 1. DFS ํ์ฉ
DFS๋ฅผ ํ์ฉํ ํ์ด์ด๋ค.
- ํ ํ์ด ํ ์ปดํจํฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ผ๋ฏ๋ก, ๊ฐ ํ์ ์ธ๋ฑ์ค๋ก visited ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค.
- dfs๋ฅผ ํตํด, ํ ํ์ ์ฐ๊ฒฐ๋์ด์๋ ์ปดํจํฐ๋ค์ ๋ชจ๋ ํ์ธํ๊ณ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
- (ํ ํ์๋ง ์ฐ๊ฒฐ๋์ด์์ด๋ ํ๋์ ๋คํธ์ํฌ์ ์ํ๊ธฐ ๋๋ฌธ์)
def solution(n, computers):
answer = 0
visited = [False for i in range(n)]
for com in range(n):
if visited[com] == False:
dfs(computers, com, visited)
answer += 1
return answer
def dfs(computers, com, visited):
visited[com] = True
for connected in range(len(computers)):
if connected != com and computers[com][connected] == 1:
if visited[connected] == False:
dfs(computers, connected, visited)
๐ก What I learned
๋ด๊ฐ ์ต์ํ ํ์ด๋ ์ด์ ํฌ์คํ ์์ ๋ค๋ฃจ์๋ ์๋ฃ์ ์ผ๋ ค ๋จน๊ธฐ ๋ฌธ์ ์ฒ๋ผ ํ ์ ์ ์ ์ฐ๊ฒฐ๋์ด์๋ ์ธ์ ๋ ธ๋๋ค์ ๋ํ ๋ญํฑ์ด๋ง! ์ฐพ๋ ๊ฒ์ด์๋๋ฐ, ์ด๋ฒ ๋ฌธ์ ์์์ ํน์ด์ ์ ์ธ์ ๋ ธ๋๊ฐ ์๋ ํ ์ ์ ๋ cnt += 1 ํด์ฃผ์ด์ผ ํ๋ค๋ ์ ์ด๋ค.
BFS, DFS์๋ ์ผ์ ํ ํจํด์ด ์์ง๋ง, ๊ฒฐ๊ตญ ๊ฐ ๋ฌธ์ ๋ง๋ค ๋ค๋ฅด๊ฒ ์ ์ฉํด์ฃผ์ด์ผ ํ๋ฉฐ ์ด๋ ํ๋ จ์ด ๋ง์ด ํ์ํ ๊ฒ์ด๋ผ ์๊ฐํ๋ค.
'Problem Solving > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ (0) | 2022.07.05 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ์์ฐ (0) | 2022.07.04 |
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ์๋ ์ซ์ ๋ํ๊ธฐ (0) | 2022.07.01 |
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ์์ ๋ํ๊ธฐ (0) | 2022.07.01 |
[ํ๋ก๊ทธ๋๋จธ์ค | Python] ๋น๋ฐ์ง๋ (0) | 2022.06.30 |