[BOJ_Python] 24444. 알고리즘 수업 - 너비 우선 탐색 1
2024. 11. 9. 17:20ㆍ[Algorithm]/문제 풀이
문제
https://www.acmicpc.net/problem/24444
사용 알고리즘
BFS
풀이
고려사항
1. 양방향 그래프
2. 각 노드에서 다음 갈 수 있는 노드 오름차순으로 방문
후기
1. 가장 기본적인 BFS 알고리즘에 정렬만 들어간 문제이다.
2. 그래프를 만들때 인덱스가 헷갈리지 않게 V+1으로 초기 세팅하여 각 수와 인덱스 번호를 맞췄다.
3. deque와 visited를 활용하여 기본 BFS를 진행하였다.
코드
import sys
from collections import deque
input = sys.stdin.readline
V, E, S = map(int, input().split())
gp = [[] for _ in range(V + 1)]
# 그래프 초기 세팅
for _ in range(E):
start, end = map(int, input().split())
gp[start].append(end)
gp[end].append(start)
# 각 노드 별 다음 노드 정렬
for _ in range(V + 1):
gp[_].sort()
q = deque([S])
visited = [0 for _ in range(V + 1)]
visited[S] = 1
cnt = 1
while q:
cur = q.popleft()
# 해당 노드에서 갈 수 있는 노드 확인
for next in gp[cur]:
# 아직 방문하지 않은 곳만 방문
if visited[next] == 0:
cnt += 1
visited[next] = cnt
q.append(next)
for i in range(1, V + 1):
print(visited[i])
결과
'[Algorithm] > 문제 풀이' 카테고리의 다른 글
[BOJ_Python] 16724. 피리 부는 사나이 (0) | 2024.11.11 |
---|---|
[BOJ_Python] 20057. 마법사 상어와 토네이도 (0) | 2024.11.10 |
[Programmers_Python] 징검다리 건너기 (0) | 2024.11.08 |
[BOJ_Python] 20055. 컨베이어 벨트 위의 로봇 (2) | 2024.11.07 |
[Softeer_Python]Lv3. 나무 섭지 (0) | 2024.10.31 |