티스토리 뷰
📚 문제
입력
출력
예제 입력
5 5 1
1 4
1 2
2 3
2 4
3 4
예제 출력
1
4
3
2
0
🧑🏻💻 풀이 과정
- 입력받은
graph
로dfs
를 호출하자. - 방문한
v
에 대해서는visited[v]
를True
로 변경하고, 방문 순서를answer[v]
에 저장하자. (visited[4] = 2
,visited[3] = 3
,visited[2] = 4
) - 방문 순서는 내림차순이므로,
graph
를 내림차순 정렬하자. graph[v]
의 노드를 반복하며, 방문하지 않은 노드를 발견하면,cnt
를 1 증가 시키고, 해당 노드를 재귀 호출하자.- 재귀호출이 끝나면,
answer
에 저장된 값을 반복하면서 출력하자.
import sys
sys.setrecursionlimit(10 ** 8)
def dfs(v):
global cnt
visited[v] = True
# 4번은 2번째 방문, 3번은 3번째 방문, 2번은 4번째 방문
# 카운트는 1씩 증가하는데.. 2번째일 때, 4번을 방문하므로, answer[4] = 2와 같다.
answer[v] = cnt
# 내림차순 정렬
graph[v].sort(reverse=True)
for i in graph[v]:
if not visited[i]:
cnt += 1
dfs(i)
n, m, r = map(int, sys.stdin.readline().split())
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)
answer = [0] * (n + 1)
cnt = 1
for _ in range(m):
x, y = map(int, sys.stdin.readline().split())
graph[x].append(y)
graph[y].append(x)
dfs(r)
for val in answer[1:]:
print(val)
'알고리즘' 카테고리의 다른 글
[algorithm] 백준 1343 - 폴리오미노 (파이썬) (0) | 2022.07.26 |
---|---|
[algorithm] 백준 10709 - 기상캐스터 (파이썬) (0) | 2022.07.23 |
[algorithm] 백준 23351 - 물 주기 (파이썬) (0) | 2022.07.19 |
[algorithm] 백준 12845 - 모두의 마블 (파이썬) (0) | 2022.07.18 |
[algorithm] 백준 20291 - 파일 정리 (파이썬) (0) | 2022.07.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 스프링부트
- Spring
- 코테
- 코틀린
- Algorithm
- 알고리즘
- 스프링
- 자료구조
- Real MySQL
- kotlin
- 노마드코더
- 백준
- 인프런
- 김영한
- MySQL
- 스프링 부트
- 릿코드
- 파이썬
- 데이터베이스
- 그리디
- 문자열
- leetcode
- 북클럽
- 노마드
- 리팩토링
- webflux
- mysql 8.0
- 구현
- 정렬
- spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함