반응형
https://www.acmicpc.net/problem/1260
DFS와 BFS 문제
요즘 DFS와 BFS를 집중적으로 연습 중이라 공부에 큰 도움이 된 문제!
문제 요구조건을 제대로 안읽어서 구현에 제대로 실패했던 문제, 다른 답을 보고나서 아! 했던..
내가 푼 정답코드
result = []
def dfs(n):
visited1[n] = True
print(n, end= ' ')
for i in graph[n]:
if not visited1[i]:
dfs(i)
def bfs(n):
result = []
visited = [False]*(N+1)
queue = [n]
visited[n] = True
while queue :
a = queue.pop(0)
if a not in result:
result.append(a)
for i in graph[a]:
if not visited[i]:
queue.append(i)
visited[a] = True
return result
import sys
N, M, V = map(int, sys.stdin.readline().split())
graph = [[] for _ in range(N+1) ]
for _ in range(M):
a, b = map(int, sys.stdin.readline().split())
graph[a].append(b)
graph[b].append(a)
for i in range(N+1):
graph[i].sort()
visited1=[False]*(N+1)
dfs(V)
print()
print(*bfs(V))
사실 BFS는 어느정도 하다보니 적응돼서 금방금방 쓸 수 있었는데, DFS에서 애를 먹었다. 가장 기본이 되는 재귀로 구현해주면 되긴 했지만, stack으로 구현하는거에 아직 익숙하지 못해서 stack으로 구성하려다가 재귀로 진행해버렸다.
또 문제 조건에 가장 낮은 수부터 찾으라는 정렬 조건을 제대로 안읽어서 한참을 왜 안되지? 이러고 있던..😕😕
느낀점
BFS는 거진 이제 대부분 구현 잘 할 수 있을 정도가 됐다고 생각하는데, 오히려 DFS가 아직 부족함을 많이 느꼈다. BFS보다 DFS가 더 쉬운건데 이렇게 부족해도 되나? 싶을 정도긴하다.
또 오늘 다른 문제 풀때도 그러더니 문제 조건을 제대로 안읽어서 이상한 곳에서 시간 잡아먹었다. 문제를 제대로 읽고, 요구조건을 잘 확인하는 습관을 길러야겠다고 느꼈다.
이러다 역량평가 IM도 못따는거 아닌가몰라 😥
반응형
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준 10986] 나머지 합(python) (0) | 2023.02.25 |
---|---|
[백준 15686] 치킨 배달 (python) (0) | 2023.02.24 |
[백준 14502] 연구소 (python) (0) | 2023.02.23 |
[백준 2447] 별 찍기 - 10 (python) (0) | 2023.02.22 |
[백준 1300] K번째 수 (python) (0) | 2023.02.22 |
댓글