[DFS] BOJ_1260 DFS와 BFS

Yodi.Song·2020년 9월 9일
0

Problem Solving

목록 보기
4/19

오늘의 교훈: 백준을 풀때는 출력 내역을 아주아주 유심히 살펴보자^^

Wrong method


# 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를 다 찾아서 넣어봤는데도 다 정답이 나오는데 뭐가 문제지? 했는데..

Correct Method

알고리즘적 문제는 없고 그냥 백준에서 요구하는 출력 형식이랑 안맞아서 오류나 났던거였습니다....

그런것도 모르고 문제가 없는 코드에서 문제를 찾고있었으니 맙소사!

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형식으로 바꿔줘야합니다 하하하하ㅏ핳;;;😂

0개의 댓글