[Python] BOJ 1260 - DFS์ BFSProblem Solving/Baekjoon Online Judge (BOJ)2026. 1. 13. 14:29
Table of Contents

01. ๐ ๋ฌธ์ ํ์
N: ์ ์ ์ ๊ฐ์
M: ๊ฐ์ ์ ๊ฐ์
V: ์์ ์ ์
์์์ ์ผ๋ก๋ถํฐ DFS์ BFS๋ฅผ ์ํํ์ฌ ๋ฐฉ๋ฌธํ๋ ์ ์ ์ ์์น๋ฅผ ์์ฐจ์ ์ผ๋ก ์ถ๋ ฅ
02. ๐ ์ฝ๋ ์ค๊ณํ๊ธฐ
1. 2์ฐจ์ ๋ฐฐ์ด์ ๋ ์ ์ ์ฌ์ด์ ๊ฐ์ ์ ๋ฌด๋ฅผ ๋งํน(0, 1)
2. ์์์ ์ ์ธ์๋ก DFS, BFS๋ฅผ ์ํํ์ฌ ๋ฐฉ๋ฌธํ๋ ์ ์ ์ ์์ฐจ์ ์ผ๋ก ์ถ๋ ฅ
2.1. ๋ฐฉ๋ฌธํ ์ ์ ์ `is_visited` 1์ฐจ์ ๋ฐฐ์ด์ ์ด์ฉํ์ฌ ๋งํนํ๋ ๊ฒ์ผ๋ก ์ฌ๋ฐฉ๋ฌธํ์ง ๋ชปํ๋๋ก ํจ
04. ๐๏ธ ์ ๋ต ์ฝ๋
import sys
input = sys.stdin.readline
# n: ์ ์ ๊ฐ์
# m: ๊ฐ์ ๊ฐ์
# v: ์์ ์ ์
n, m, v = map(int, input().split())
graph = [[0 for _ in range(n+1)] for _ in range(n+1)]
for _ in range(m):
v1, v2 = map(int, input().split())
graph[v1][v2] = 1
graph[v2][v1] = 1
# DFS
def dfs(cur):
res = str(cur)
is_visited[cur] = 1
for i in range(1, n+1):
if graph[cur][i] == 1 and is_visited[i] == 0:
res += " " + dfs(i)
return res
# BFS
def bfs(cur):
res = ""
is_visited[cur] = 1
q = []
q.append(cur)
while len(q):
cur = q.pop(0)
res += str(cur) + " "
for i in range(1, n+1):
if graph[cur][i] == 1 and is_visited[i] == 0:
q.append(i)
is_visited[i] = 1
return res;
is_visited = [0 for _ in range(n+1)]
print(dfs(v))
is_visited = [0 for _ in range(n+1)]
print(bfs(v))
'Problem Solving > Baekjoon Online Judge (BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] BOJ 10942 - ํฐ๋ฆฐ๋๋กฌ? (0) | 2025.05.08 |
|---|---|
| [Java] BOJ 1202 - ๋ณด์ ๋๋ (0) | 2025.05.06 |
| [Java] BOJ 2263 - ํธ๋ฆฌ์ ์ํ (0) | 2025.05.03 |
| [Java] BOJ 11049 - ํ๋ ฌ ๊ณฑ์ ์์ (0) | 2025.05.01 |
| [Java] BOJ 1005 - ACM Craft (0) | 2025.04.29 |
@ONE_ :: ์ ํธ์
์๋ชป๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋ง์ํด์ฃผ์ธ์!