250x250
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 백준
- 어플리케이션 클래스 로더
- 심볼릭 레퍼런스
- 객체지향
- python list method
- 파이썬 리스트 메서드
- 딕셔너리
- 스프링
- 부트스트랩 클래스 로더
- 자바
- 코딩테스트
- BFS
- getreference
- 클래스 로더 계층
- 자료구조
- aws saa-c03
- 다이렉트 레퍼런스
- python
- 2026 AWS SAA-C03
- 스프링 컨테이너
- Spring
- 파이썬
- 파이썬 문자열 메서드
- 알고리즘
- 컴포넌트 스캔
- 플랫폼 클래스 로더
- dfs
- AWS SAA-C03 합격후기
- stop the world
- java
Archives
- Today
- Total
클라우드 낚시꾼
[백준] 2644번 촌수계산 - DFS (Python3) 본문
728x90

제한 조건과 설계

1. 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. -> 노드가 최대 100개 이므로 메모리와 시간 제한이 널널하다.
2. 탐색 시작 노드에서 특정 노드에 도달하는 데 까지 거리를 묻는 문제이다. -> DFS
자연어 알고리즘
- 정보를 입력 받는다.
- 시작 노드와 탐색 노드를 설정하여 DFS 탐색을 시도한다.
- DFS 탐색
- 다음 노드로 이동할 때 마다 이동 거리를 1 증가시킨다.
- 특정 노드에 도달하면 그때 까지의 이동 거리를 출력하고 프로그램을 종료한다.
- 노드를 재방문할 때는 이동 거리를 1 감소시킨다.
- 3번에서 특정 노드에 도달하지 못했다면 -1을 출력하고 종료한다.
코드
import sys
input = sys.stdin.readline
node = int(input())
start, end = map(int, input().split())
visited = [False] * (node+1)
graph = [[] for _ in range(node+1)]
for _ in range(int(input())):
u,v = map(int,input().split())
graph[u].append(v)
graph[u].sort()
graph[v].append(u)
graph[v].sort()
distance = 0
def dfs(graph, i, visited,end):
visited[i] = True
global distance
for j in graph[i]:
if not visited[j]:
distance += 1
if j == end:
print(distance)
exit()
dfs(graph,j,visited,end)
distance -= 1
dfs(graph,start,visited,end)
print(-1)
세 줄 요약
- 노드와 노드 사이의 거리를 물어보는 문제이면 DFS가 유리할 지도...
- 노드를 재방문 했을 경우에는 거리를 1 감소시켜야 된다.
- 노드 첫 방문 시 방문 처리.
728x90
'CodingTest > 문제풀이' 카테고리의 다른 글
| [백준] 13656 침투 - BFS (Python3) (0) | 2023.12.29 |
|---|---|
| [백준] 18352번 특정 거리의 도시 찾기 - BFS(Python3) (1) | 2023.12.29 |
| [백준] 13023번 ABCDE - DFS 풀이 + 반례 (Python3) (0) | 2023.12.27 |
| [백준] 11724번 연결 요소의 개수 - DFS(stack, 재귀함수) (Python3) (0) | 2023.12.27 |
| [백준] 4963번 섬의 개수 - BFS 풀이 (Python3) (2) | 2023.12.27 |