[백준_python] DFS와 BFS || 1260

2021. 2. 16. 22:35·🎯PS

www.acmicpc.net/problem/1260

1260번: DFS와 BFS

첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사

www.acmicpc.net

깊이 우선 탐색(DFS_Depth-First Search)

: 루트 노드를 모두 완벽하게 탐색을 한 후 다음 분기로 넘어가는 방법
모든 노드를 방문 하고자 하는 경우에 이용
순환 호출 혹은 스택 이용

너비 우선 탐색(BFS_Breadth-First Search)

: 루트 노드에서 인접한 노드부터 먼저 탐색하는 방법

두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 사용
재귀적으로 동작하지 않는다. 큐를 사용


# DFS와 BFS

n, m, v = map(int, input().split(' '))  # n : 정점, m : 간선, v : 시작할 정점 번호

graph = [[0]*(n+1) for _ in range(n+1)]  # 인덱스값 = 정점
visited = [False] * (n+1)  # 방문여부 체크리스트

for i in range(m):  # 간선만큼
    a, b = map(int, input().split(' '))
    graph[a][b] = graph[b][a] = 1  # 두 정점을 이어준다.


def DFS(start):
    visited[start] = True
    print(start, end=" ")
    for i in range(1, n+1):  # 1부터 n까지 검사
        if visited[i] == 0 and graph[start][i] == 1:  # 방문을 하지 않았고, 간선이 있는 곳
            DFS(i)


def BFS(start):
    queue = [start]  # 큐 이용
    visited[start] = False  # DFS에서 방문한 곳을 1로 표시하여서 BFS는 0으로 표시
    while queue:
        start = queue.pop(0)
        print(start, end=" ")
        for i in range(1, n+1):
            if visited[i] == 1 and graph[start][i] == 1:
                queue.append(i)
                visited[i] = 0


DFS(v)
print()
BFS(v)

DFS와 BFS에 관련된 여러 문제들을 풀어보면서 해당 알고리즘을 적용하는 것에 익숙해져야 할 것 같다.

반응형
'🎯PS' 카테고리의 다른 글
  • [백준_python] 연결 요소의 개수 || 11724 (시간초과, 런타임에러(recursionerror)
  • [백준_python] 바이러스 || 2606
  • [백준_python] 늑대와 양 || 16956
  • [백준_python] 접미사 배열 || 11656
dmaolon
dmaolon
프로그래밍을 공부한 내용을 기록하는 공간입니다.
  • dmaolon
    기록 남기기
    dmaolon
  • 전체
    오늘
    어제
    • ALL (260)
      • ➰ Series (5)
      • 🎯PS (168)
        • Algorithm (15)
      • ☕ Java (11)
      • 🍀 Spring Boot (29)
      • 💬 Database (9)
      • 🐣 Computer Science (14)
      • 👍 Daily (4)
      • 🎁ReactJS (4)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    프로그래머스
    프로그래밍
    알고리즘
    BFS
    Spring
    파이썬
    자바
    백준
    dfs
    코딩
  • hELLO· Designed By정상우.v4.10.1
dmaolon
[백준_python] DFS와 BFS || 1260
상단으로

티스토리툴바