오늘의 교훈: 백준을 풀때는 출력 내역을 아주아주 유심히 살펴보자^^
# DFS와 BFS
# https://www.acmicpc.net/problem/1260
# 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오.
N, M, V = map(int, input().split())
graph = [[] for _ in range(N+1)]
visited = [False for _ in range(N+1)]
result = []
def bfs(v):
queue = []
queue.append(v)
while queue:
now = queue.pop(0)
# print("queue: ", queue)
if not visited[now]:
visited[now] = True
result.append(now)
child_sort = sorted(graph[now])
for c in child_sort:
queue.append(c)
def dfs(v):
stack = []
stack.append(v)
while stack:
now = stack.pop()
# print("stack: ", stack)
if not visited[now]:
visited[now] = True
result.append(now)
child_sort = sorted(graph[now], reverse=True)
for c in child_sort:
stack.append(c)
# graph 입력
for _ in range(M):
i, j = map(int, input().split())
graph[i].append(j)
graph[j].append(i)
dfs(V)
print(result)
visited = [False for _ in range(N+1)]
result.clear()
bfs(V)
print(result)
모든 예제가 다 맞았는데 채점만 하면 20%도 안돼서 틀리는거에요.. 반례가 있나 하면서 온갖 TC를 다 찾아서 넣어봤는데도 다 정답이 나오는데 뭐가 문제지? 했는데..
알고리즘적 문제는 없고 그냥 백준에서 요구하는 출력 형식이랑 안맞아서 오류나 났던거였습니다....
그런것도 모르고 문제가 없는 코드에서 문제를 찾고있었으니 맙소사!
dfs(V)
print("리스트 출력: ")
print(result)
print("요구되는 출력값: ")
print(" ".join(map(str, result)))
visited = [False for _ in range(N+1)]
result.clear()
bfs(V)
print("리스트 출력: ")
print(result)
print("요구되는 출력값: ")
print(" ".join(map(str, result)))
'''
리스트 출력:
[3, 1, 2, 5, 4]
요구되는 출력값:
3 1 2 5 4
리스트 출력:
[3, 1, 4, 2, 5]
요구되는 출력값:
3 1 4 2 5
'''
약간 코드가 더럽긴 한데 이렇게 str형식으로 바꿔줘야합니다 하하하하ㅏ핳;;;😂