[백준] 24479번 알고리즘 수업 - 깊이 우선 탐색 1- python

2022. 6. 9. 13:08·알고리즘 공부/BFS & DFS

 

문제

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

 

24479번: 알고리즘 수업 - 깊이 우선 탐색 1

첫째 줄에 정점의 수 N (5 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000), 시작 정점 R (1 ≤ R ≤ N)이 주어진다. 다음 M개 줄에 간선 정보 u v가 주어지며 정점 u와 정점 v의 가중치 1인 양

www.acmicpc.net

시간 복잡도

시간 복잡도는 재귀를 써서? 잘 모르겠지만 n^2 일거 같다.

 

코드

import sys
sys.setrecursionlimit(100000)
n, m, r = map(int, sys.stdin.readline().split())

graph = [[] for i in range(n + 1)]
visited = [False] * (n + 1)
cnt = 1
visited_order = [0] * (n+1)
for i in range(m):
    u, v = map(int, sys.stdin.readline().split())
    graph[u].append(v)
    graph[v].append(u)
for i in range(len(graph)):
    graph[i].sort()


def dfs(r, graph, visited):
    global cnt
    visited[r] = True
    visited_order[r] = cnt
    cnt += 1
    for i in graph[r]:
        if visited[i] is not True:
            dfs(i, graph, visited)


dfs(r, graph, visited)

for i in visited_order[1:]:
    print(i)

해설

 

전형적인 dfs 문제인데 문제를 잘못 읽어서 고생했다. 하하

요구하는 사항이 뭔지 확실히 알고 접근하자.

다만 어려웠던게 재귀를 사용해서 제한을 거는 것에 꽤 많은 생각을 했다 

예전에 현대 문제를 풀때 알았던 것인데 그걸 활용해서 했다. 

 

 

 

 

 

 

 

반응형

'알고리즘 공부 > BFS & DFS' 카테고리의 다른 글

[백준] 24444번 알고리즘 수업 - 너비 우선 탐색 1 - python  (0) 2022.06.09
[백준] 24480번 알고리즘 수업 - 깊이 우선 탐색 2 - python  (0) 2022.06.09
[백준] 2583번 영역 구하기 - 파이썬  (0) 2022.05.11
[백준] 11724번 연결 요소의 개수 - 파이썬  (0) 2022.05.06
[백준] 23288번 주사위 굴리기 2 - 파이썬  (0) 2022.04.18
'알고리즘 공부/BFS & DFS' 카테고리의 다른 글
  • [백준] 24444번 알고리즘 수업 - 너비 우선 탐색 1 - python
  • [백준] 24480번 알고리즘 수업 - 깊이 우선 탐색 2 - python
  • [백준] 2583번 영역 구하기 - 파이썬
  • [백준] 11724번 연결 요소의 개수 - 파이썬
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (491)
      • 생산성 (2)
        • 인텔리제이 (2)
      • 프로젝트 기록 (14)
        • git (2)
        • spring (3)
        • TestCode (2)
        • spring security (3)
        • 기타 (2)
        • MySQL (0)
        • Cloud (2)
      • 회고 (4)
      • Spring (6)
      • JPA (0)
      • DB (4)
        • MySql (2)
        • Redis (1)
      • Java (7)
        • JSP (1)
      • 잡담 (1)
      • CS (30)
        • 컴퓨팅 사고 (0)
        • 배열 (4)
        • 알고리즘 (8)
        • 메모리 (7)
        • 자료구조 (9)
        • 암호학 (2)
      • opencv (14)
      • AI (56)
        • 머신러닝 (2)
        • 딥러닝 (7)
        • tensorflow (3)
        • 머신러닝(딥러닝) 정리 (21)
        • 강화학습 (7)
        • 논문 읽기 (1)
        • 잡동사니 (1)
        • python AI (13)
        • 선형대수 (1)
        • 확률론 (0)
      • 알고리즘 공부 (177)
        • 그래프 이론 (0)
        • 다익스트라 (4)
        • 위상정렬 (3)
        • 신장트리-크루스칼 알고리즘 (4)
        • 플로이드 워셜 (3)
        • 이진탐색 (9)
        • 백트래킹 (11)
        • 부르드포스 (9)
        • 다이나믹 프로그래밍 (20)
        • BFS & DFS (24)
        • 그리디 (6)
        • 구현 (15)
        • 정렬 (3)
        • 기타 (62)
        • 수학? (1)
      • 코딩 (173)
        • 파이썬(python) (15)
        • c언어 (13)
        • 프로그래머스 lv1 (46)
        • 프로그래머스 lv2 (41)
        • 백준 - c++ (49)
        • Softeer (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    순차 탐색
    그리디
    코딩문제
    자료구조
    삽입 정렬
    n진법 변환
    코딩기초스킬
    DFS
    BFS
    왜곡보정
    C언어 기초
    소수찾기
    백준
    인접리스트
    정렬
    선택정렬
    if문
    코딩
    스택
    코딩기초
    에라토슽네스의 체
    다이나믹 프로그래밍
    인접행렬
    캘리브레이션
    이미지처리
    코딩테스트
    큐
    c언어
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩 코딩 코오딩
[백준] 24479번 알고리즘 수업 - 깊이 우선 탐색 1- python
상단으로

티스토리툴바