[백준 1260] DFS와 BFS (실버 3) 문제 풀이- 파이썬 python

2022. 12. 29. 19:15네카라쿠배 취준반 - 프로그래머스 문제 풀이

 

0. 자세한 설명은 YouTube 영상으로

 

[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 DFS로 분들이 가장 많다는 소식을 들어 제작된 강의입니다 :) 문과 출신의 현업 개발자가 공부한 방식 그대로 설명하고, 지루한 이론 강의는 다 직접 문제를

www.inflearn.com

 

1. 풀이 코드

import sys

def dfs(idx) :
    global visited
    visited[idx] = True
    print(idx, end = ' ')
    for next in range(1, N+1) :
        if not visited[next] and graph[idx][next]:
            dfs(next)

def bfs():
    global q, visited
    while q:
        cur = q.pop(0)
        visited[cur] = True
        print(cur, end = ' ')
        for next in range(1, N + 1) :
            if not visited[next] and graph[cur][next]:
                visited[next] = True
                q.append(next)

# 0. 입력 및 초기화
input = sys.stdin.readline
N, M, V = map(int, input().split())

graph = [[False] * (N + 1) for _ in range(N + 1)]
visited = [False] * (N + 1)

# 1. graph 정보 입력
for _ in range(M) :
    a, b = map(int, input().split())
    graph[a][b] = True
    graph[b][a] = True

# 2. dfs 
dfs(V)
print()

# 3. bfs
visited = [False] * (N + 1)
q = [V]
bfs()