๐ ๋ฌธ์
๊ฐ์ค์น ์๋ ๋ฐฉํฅ ๊ทธ๋ํ G๊ฐ ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ์ ์ (i, j)์ ๋ํด์, i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋์ง ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N (1 ≤ N ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ ์ค์๋ ๊ทธ๋ํ์ ์ธ์ ํ๋ ฌ์ด ์ฃผ์ด์ง๋ค. i๋ฒ์งธ ์ค์ j๋ฒ์งธ ์ซ์๊ฐ 1์ธ ๊ฒฝ์ฐ์๋ i์์ j๋ก ๊ฐ๋ ๊ฐ์ ์ด ์กด์ฌํ๋ค๋ ๋ป์ด๊ณ , 0์ธ ๊ฒฝ์ฐ๋ ์๋ค๋ ๋ป์ด๋ค. i๋ฒ์งธ ์ค์ i๋ฒ์งธ ์ซ์๋ ํญ์ 0์ด๋ค.
๐์ถ๋ ฅ
์ด N๊ฐ์ ์ค์ ๊ฑธ์ณ์ ๋ฌธ์ ์ ์ ๋ต์ ์ธ์ ํ๋ ฌ ํ์์ผ๋ก ์ถ๋ ฅํ๋ค. ์ ์ i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด i๋ฒ์งธ ์ค์ j๋ฒ์งธ ์ซ์๋ฅผ 1๋ก, ์์ผ๋ฉด 0์ผ๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
๐ ๋ฌธ์ ํด์
n๊ฐ์ ๋ ธ๋๊ฐ ์๊ณ , n๊ฐ์ ์ค์ ๊ฑธ์ณ ์ธ์ ํ๋ ฌ์ด ์ฃผ์ด์ง๋, i์์ j๋ก ๊ฐ๋ ๊ฐ์ ์ด ์กด์ฌํ๋ฉด 1, i์์ j๋ก ๊ฐ๋ ๊ฐ์ ์ด ์๋ค๋ฉด 0์ ์ธ์ ํ๋ ฌ์ ํํ๋ก ๋ค์ ์ถ๋ ฅํ๋ค.
์ฌ๊ธฐ์ ์ธ์ ํ๋ ฌ์ด๋!! ๊ทธ๋ํ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ 2์ฐจ์ ๋ฐฐ์ด๋ก ํํํ๋ ๋ฐฉ์์ด๋ค. ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด ํ์ ํ์ฌ ๋ ธ๋๋ฅผ ์๋ฏธํ๊ณ ์ด์ ๊ฐ๊ณ ์ ํ๋ ๋ ธ๋๋ฅผ ์๋ฏธํ๊ณ , ๊ฐ์ ๊ฐ์ ์ ์๋ฏธํ๋ค. ์ด ๋ฌธ์ ์์ ์ด ๊ฐ์ด 1์ด๋ฉด ๋์ ์ฐ๊ฒฐ๊ด๊ณ์ธ๊ฒ์ด๊ณ , 0์ด๋ฉด ์ฐ๊ฒฐ๊ด๊ณ๊ฐ ์๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ์ฐ๊ฒฐ๊ด๊ณ์ ์๋ฏธ๋ i์์ j๋ก ๊ฐ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋ ๊ถ๊ธํ๋ฉด ์ ๊ธ์ ํ๋ฒ ์ฝ์ด๋ณด์๊ธธใ .ใ
๐ป ์ฝ๋
import sys
input = sys.stdin.readline
# ์ฌ๊ท
def dfs(num):
for i in graph[num]:
if visited[i] == 0: # ๋ฐฉ๋ฌธํ ์ ์๋ค๋ฉด ๋ฐฉ๋ฌธ
visited[i] = 1 # ๋ฐฉ๋ฌธ ์ฒดํฌ
dfs(i)
n = int(input())
graph = [[] for i in range(n)]
for i in range(n):
nums = list(map(int,input().rstrip().split()))
for j in range(n):
if nums[j] == 1: # i์์ j๋ก ๊ฐ๋ ๊ฐ์ ์ด ์กด์ฌํ๋ค๋ฉด
graph[i].append(j) # ๊ทธ๋ํ์ ์ถ๊ฐ
for i in range(n):
visited = [0 for i in range(n)] # ๋ฐฉ๋ฌธ ์ฒดํฌ
dfs(i)
print(*visited)
๐ ๋ฌธ์ ๋งํฌ ๊ฒฝ๋ก์ฐพ๊ธฐ
'Problem Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1389๋ฒ: ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น - ํ์ด์ฌ (0) | 2022.06.23 |
---|---|
[๋ฐฑ์ค] 17626๋ฒ: Four Squares - ํ์ด์ฌ (0) | 2022.06.20 |
[๋ฐฑ์ค] 5430๋ฒ: AC - ํ์ด์ฌ (0) | 2022.06.16 |
[๋ฐฑ์ค] 13023๋ฒ: ABCDE - ํ์ด์ฌ (0) | 2022.06.15 |
[๋ฐฑ์ค] 1331๋ฒ: ๋์ดํธ ํฌ์ด - ํ์ด์ฌ (0) | 2022.06.13 |