갬쿠
개미 개발
갬쿠
전체 방문자
오늘
어제
  • ALL (137)
    • React (20)
    • JS & CSS & HTML (29)
    • Algorithm (62)
    • 웹 보안 (11)
    • 달리는 까까: 쿠키런 팬게임 (10)
    • Python (0)
    • 기타 (5)
    • 비공개 플젝 (0)

블로그 메뉴

  • GitHub
  • 방명록
  • 관리자 메뉴

공지사항

인기 글

태그

  • 쿠키런
  • 달리는 까까
  • Baekjoon
  • 쿠키런 모작
  • useEffect
  • Python
  • REACT
  • 백준
  • node.js
  • SQL Injection
  • HTML
  • 객체
  • JavaScript
  • BEAKJOON
  • 크롬 공룡 게임
  • useReducer
  • Object
  • useState
  • Programmers
  • Best of the Best
  • 쿠키런 팬게임
  • js
  • transform
  • CSS
  • 크롬 공룡게임
  • 게임 개발
  • 모의 해킹
  • 리액트
  • EventListener
  • 게임

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
갬쿠

개미 개발

[1260] DFS와 BFS - Python
Algorithm

[1260] DFS와 BFS - Python

2023. 2. 16. 20:33
/* 문제 */
그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다.

DFS와 BFS를 둘 다 구현하는 문제다. 다시 한 번 정리한다는 생각으로 풀어봤다.

# 정답 코드

from collections import deque
import sys
sys.setrecursionlimit(10**9)
input = sys.stdin.readline

# dfs
# 재귀 함수 이용, 함수가 호출되었을 때 방문처리 및 출력
def dfs(graph, v, visited):
    visited[v] = True
    print(v, end=' ')
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)

# bfs
# 큐 이용, 큐에 들어갈 때 방문처리, 큐에서 pop되었을 때 출력
def bfs(graph, start, visited):
    queue = deque([start])
    visited[start] = True
    while queue:
        v = queue.popleft()
        print(v, end=' ')
        for i in graph[v]:
            if not visited[i]:
                queue.append(i)
                visited[i] = True

n, m, s = map(int, input().split())
graph = [[] for _ in range(n + 1)]
visited_dfs = [False] * (n + 1)
visited_bfs = [False] * (n + 1)
for _ in range(m):
    u, v = map(int, input().split())
    graph[u].append(v)
    graph[v].append(u)
for i in graph:
    i.sort()

dfs(graph, s, visited_dfs)
print()
bfs(graph, s, visited_bfs)

정말 기본적인 코드이므로 꼭 외워야겠다.

728x90

'Algorithm' 카테고리의 다른 글

[1012] 유기농 배추 - Python  (0) 2023.02.17
[2667] 단지번호붙이기 - Python  (0) 2023.02.16
[2606] 바이러스 - Python  (0) 2023.02.16
[24444] 알고리즘 수업 - 너비 우선 탐색 1 - Python  (0) 2023.02.16
[24480] 알고리즘 수업 - 깊이 우선 탐색 2 - Python  (0) 2023.02.16
    'Algorithm' 카테고리의 다른 글
    • [1012] 유기농 배추 - Python
    • [2667] 단지번호붙이기 - Python
    • [2606] 바이러스 - Python
    • [24444] 알고리즘 수업 - 너비 우선 탐색 1 - Python
    갬쿠
    갬쿠
    보안&소프트웨어 전공 프론트엔드 개발자

    티스토리툴바