[백준|파이썬] 1260: DFS와 BFS (실버2)

2023. 4. 5. 11:16·Problem Solving/백준
문제

https://www.acmicpc.net/problem/1260

 

1260번: DFS와 BFS

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

www.acmicpc.net

 

 

🐍파이썬
import sys

N, M, V = map(int,sys.stdin.readline().split())
graph = [[] for _ in range(N + 1)]

for i in range(M):
    a, b = map(int,sys.stdin.readline().split())
    graph[a].append(b)
    graph[b].append(a)
    
for i in graph:	#숫자가 낮은 노드부터 탐색시키기 위해 정렬
      i.sort()

def DFS(v):
    visited[v] = True	#노드v 방문처리
    print(v, end=' ')	#방문한 노드 출력
    for i in graph[v]:	#노드v와 연결된 모든 노드에 대해
        if not visited[i]:	#노드i에 방문한 적이 없다면
            DFS(i)	#노드i를 기준으로 깊이탐색

def BFS(start):
    queue.append(start)	#큐에 시작노드 삽입
    visited[start] = True	#시작노드 방문처리
    while queue:	#큐가 빌때까지 반복
        v = queue.pop(0)	#큐의 가장 왼쪽에서 원소 하나를 꺼냄
        print(v, end=' ')	#꺼낸 원소를 출력
        for i in graph[v]:	#꺼낸 원소와 연결된 모든 노드에 대해
            if not visited[i]:	#i에 방문한 적이 없다면
                queue.append(i)	#i를 큐에 넣기
                visited[i] = True	#i를 방문처리

visited = [False] * (N+1)
DFS(V)

print()

queue = []
visited = [False] * (N+1)
BFS(V)

 

 

참고한 블로그

풀이 참고

https://ji-gwang.tistory.com/291

 

백준 1260번 파이썬 문제풀이(큐와 그래프 - DFS와 BFS)

해당 문제는 DFS와 BFS의 기본개념을 이해하기 좋은문제이다. DFS는 재귀로 구현하는게 보통이고 BFS는 queue로 구현하는게 보통이다. 또한 입력받은 노드의 개수만큼 이차원 리스트로(이차원 리스

ji-gwang.tistory.com

 

이론 참고

https://vanillacreamdonut.tistory.com/214

 

[Python] DFS / BFS 정리

🌝BFS : 너비우선탐색 가까운 노드부터 탐색하는 알고리즘 선입선출 방식인 큐 자료구조를 이용 🌜동작 방식 1. 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 2. 큐에서 노드를 꺼내 해당

vanillacreamdonut.tistory.com

 

'Problem Solving > 백준' 카테고리의 다른 글

[백준|파이썬] 2644: 촌수계산 (실버2)  (0) 2023.04.07
[백준|파이썬] 2178: 미로 탐색 (실버1)  (0) 2023.04.06
[백준|파이썬] 2606: 바이러스 (실버3)  (0) 2023.04.05
[백준|C++] 2750: 수 정렬하기  (0) 2021.09.10
[백준|C++] 2869: 달팽이는 올라가고 싶다  (0) 2021.09.02
[백준|C++] 10250: ACM 호텔  (1) 2021.09.01
'Problem Solving/백준' 카테고리의 다른 글
  • [백준|파이썬] 2178: 미로 탐색 (실버1)
  • [백준|파이썬] 2606: 바이러스 (실버3)
  • [백준|C++] 2750: 수 정렬하기
  • [백준|C++] 2869: 달팽이는 올라가고 싶다
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 프로그래밍
        • Programming
        • C | C++
        • Java
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    리액트
    프로젝트
    bfs
    자바
    React
    SWEA
    강의내용정리
    spring boot
    자바스크립트
    Next.js
    알고리즘
    구현
    블로그 제작
    뉴렉처
    Jiraynor Programming
    AWS
    파이썬
    프로그래머스
    웹사이트
    Til
    mysql
    포트폴리오
    공식문서
    클론 프로젝트
    플러터
    타입스크립트
    컴퓨터네트워크
    d3
    ZeroCho
    백준
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[백준|파이썬] 1260: DFS와 BFS (실버2)
상단으로

티스토리툴바