PS/백준
[Python] 14496번 그대, 그머가 되어
s_omi
2024. 8. 29. 09:49
728x90
반응형
SMALL
✏️ 문제
문제 파악
최소 치환 횟수를 구하므로 BFS를 사용해서 풀어야 한다.
인접리스트를 활용해서 풀어야 하는 문제라 다음과 같이 입력을 처리하였다.
for _ in range(m):
u, v = map(int, input().split())
graph[u].append(v)
graph[v].append(u)
그 후엔 graph를 돌며 visited 배열에 치환 횟수를 저장하며 풀었다.
예제들은 잘 출력되는데 자꾸 틀렸다고 나오길래 찾아보니 a와 b가 같은 문자라면 치환 횟수가 0이므로 0을 출력해야 한다는 것을 빼먹고 있었다..
예제는 잘 풀리는데 퍼센트 높을 때 틀리는 사람은 a와 b가 같은 문자였을 때를 처리했는 지 확인해 보는 것을 추천!
알고리즘
- 그래프 이론
- 그래프 탐색
- 너비 우선 탐색
코드
from collections import deque
import sys
input = sys.stdin.readline
a, b = map(int, input().split())
n, m = map(int, input().split())
graph = [[] * (n+1) for _ in range(n+1)]
visited = [0] * (n+1)
for _ in range(m):
u, v = map(int, input().split())
graph[u].append(v)
graph[v].append(u)
def bfs(a, b):
q = deque([a])
visited[a] = 0
if a == b:
return 0
while q:
node = q.popleft()
for neighbor in graph[node]:
if visited[neighbor] == 0:
visited[neighbor] = visited[node] + 1
q.append(neighbor)
if neighbor == b:
return visited[neighbor]
return -1
print(bfs(a, b))
⭐️ DFS와 BFS에 대해서 아직 잘 모른다면?
[알고리즘] DFS와 BFS
DFS (깊이 우선 탐색) 와 BFS (너비 우선 탐색) ?그래프 탐색 알고리즘의 대표적인 예로 이 알고리즘들은 그래프, 트리, 네트워크 등의 자료구조를 탐색하는 데 사용한다. 그래프는 노드(정점)와 노
mi-dairy.tistory.com
728x90
반응형
LIST