[BOJ][Python] 1260 DFS와 BFS

2024. 4. 8. 14:23·🚩 Coding Test/Baekjoon
728x90

[문제]

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

 

1260번: DFS와 BFS

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

www.acmicpc.net

 

 

[코드]

#S2_1260 DFS와 BFS.py

from collections import deque

#dfs
def dfs(x):						#깊이우선탐색
    global graph, visit, answer
    visit[x] = 1					#현재 노드 방문 표시 
    answer.append(x)					#방문한 노드 answer 추가 
    
    for i in range(1, n+1):
        if graph[x][i] == 1 and not visit[i]:	
            dfs(i)					#재귀 호출로 깊이 탐색 

    return answer

#bfs
def bfs(start):						#너비우선탐색
    global graph, visit, answer
    queue = deque([start])				#deque로 설정
    visit[start] = 1					#시작 노드 방문 표시 

    while queue:					#queue가 빌 때까지 반복 실행
        x = queue.popleft()				#큐에서 노드를 꺼내 방문 여부를 체크하고 
        answer.append(x)				#결과 리스트에 추가

        for i in range(1,n+1):
            if graph[x][i] == 1 and not visit[i]:	#방문하지 않은 노드를 큐에 넣고
                queue.append(i)				#방문 여부를 체크
                visit[i] = 1

    return answer

#main
n, m, v = map(int,input().split())			#노드 수, 간선 수, 시작 노드 

graph = [[0] * (n+1) for _ in range(n+1)]		#그래프 배열 생성
visit = [0] * (n+1)					#방문 노드 표시할 배열 생성			
answer = []						#방문 순서를 출력할 배열 생성

for i in range(m):
    v1, v2 = map(int,input().split())
    graph[v1][v2] = 1					#문제에서 양방향 그래프라고 명시 
    graph[v2][v1] = 1		

dfs(v)
print(' '.join(map(str,answer)))

visit = [0] * (n+1)					#같은 변수명을 쓰므로 초기화 필요 
answer = []		

bfs(v)
print(' '.join(map(str,answer)))
반응형

'🚩 Coding Test > Baekjoon' 카테고리의 다른 글

[BOJ][Python] 2644 촌수계산  (0) 2024.04.08
[BOJ][Python] 2606 바이러스  (0) 2024.04.08
[BOJ][Python] 9506 약수들의 합  (0) 2024.04.05
[BOJ][Python] 11005 진법 변환 2  (0) 2024.04.03
[BOJ][Python] 2563 색종이  (0) 2024.04.02
'🚩 Coding Test/Baekjoon' 카테고리의 다른 글
  • [BOJ][Python] 2644 촌수계산
  • [BOJ][Python] 2606 바이러스
  • [BOJ][Python] 9506 약수들의 합
  • [BOJ][Python] 11005 진법 변환 2
zo0oz
zo0oz
꾸준함 기르기
  • zo0oz
    우당탕탕굴러가는하루
    zo0oz
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 🏠 Home
    • 📑 Tag
    • Github
    • 분류 전체보기 (295)
      • 📃 취준 회고록 (0)
        • 2024 하반기 (0)
      • 📅 매일매일 CS (2)
      • 🚩 Coding Test (203)
        • Baekjoon (94)
        • Programmers (43)
        • Code Tree (34)
        • SWEA (19)
        • HackerRank (2)
        • SQL (8)
      • 🇱 Languages (4)
        • Python (4)
      • 🇫 Framework (2)
        • fastAPI (2)
      • 🤖 AI (9)
        • LLM (1)
        • Computer Vision (3)
      • 📈 Data-Science (4)
        • Pandas (4)
      • 🛠️ 형상관리 (6)
        • Git (6)
      • 💥 Projects (8)
        • 개인실습 (7)
      • 🇰 Kakaotech Bootcamp (17)
        • 이론 (9)
        • 실습 (5)
      • 🇳 Naver BoostCourse (9)
        • 파이썬으로 시작하는 데이터 사이언스 (6)
      • 🏆 자격증 (25)
        • 정보처리기사 (10)
        • ADsP (1)
        • SQLD (13)
        • OPIc (0)
      • 🔎 etc (1)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
zo0oz
[BOJ][Python] 1260 DFS와 BFS
상단으로

티스토리툴바