티스토리 뷰

알고리즘

백준 1260 dfs 와 bfs

killog 2020. 9. 24. 23:27
반응형

런타임 에러나서 한참 고생했다. 진짜 한 10번 고친듯/

처음에는 인강대로 하는 내 자신을 원망했지만, 후에는 백준에 대한 유의사항도 공부하는 유익한 문제였다.

딕셔너리 키 없는 에러가 안나오기 위해 차라리 빈 리스트를 만들어주는 것도 하나의 방법

#제발 list.pop(0)를 쓰지 마세요! 
# 파이썬의 최대 재귀 깊이는 1,000 근처입니다. 그래서 재귀로 DFS를 구현하면 방법에 따라 런타임 에러가 날 수 있습니다. 
#sys.setrecursionlimit으로 이 깊이를 조절할 수 있습니다.
import collections 

def bfs(graph,start_node):
    visited=[]
    will_visit=[]
    # 두개의 큐로 된다.
    if start_node in graph:
        will_visit=collections.deque(sorted(graph[start_node][:]))
    visited.append(start_node)
    while will_visit:
        travel = will_visit.popleft()
        if travel not in visited:
            visited.append(travel)
            if travel in graph: # 런타임 해소 돼라. graph에 node라는 key가 없을 수도 있습니다.
                aaaa=sorted(graph[travel])
                for kl in aaaa:
                    will_visit.append(kl)
    print(*visited)
    return

def dfs(graph,start_node):
    visited=[]
    will_visit=[]
    # 큐, 스택으로 된다.
    if start_node in graph:
        will_visit=collections.deque(sorted(graph[start_node][:], reverse=True))
    visited.append(start_node)
    
    while will_visit:
        
        travel = will_visit.pop()
        if travel not in visited:
            visited.append(travel)
            if travel in graph: # 런타임 해소 돼라. graph에 node라는 key가 없을 수도 있습니다.
                aaaa=sorted(graph[travel], reverse=True)
                for kl in aaaa:
                    will_visit.append(kl)
        

    print(*visited)
    return

N, M , V =map(int, input().split(" "))
maps = []
for _ in range(M):
    maps.append(list(map(int, input().split(" "))))
graph={}
while maps:
    gg=maps.pop()
    if gg[0] in graph:
        graph[gg[0]].append(gg[1])
    else:
        graph[gg[0]]=[gg[1]]
    if gg[1] in graph:
        graph[gg[1]].append(gg[0])
    else:
        graph[gg[1]]=[gg[0]]

# for j in graph:
#     graph[j]=sorted(graph[j],reverse=True)
#print(graph)
# graph={
#     1:[4,3,2],
#     2:[4,1],
#     3:[4,1],
#     4:[3,2,1]
# }
dfs(graph,V)
bfs(graph,V)

반응형

'알고리즘' 카테고리의 다른 글

백준 13904번 과제 파이썬  (0) 2020.09.30
백준 2606 바이러스  (0) 2020.09.24
collections deque  (0) 2020.09.24
백준 주의사항: 왜이틀( 왜 이게 틀리지?) 런타임 에러, 시간 초과  (0) 2020.09.24
BFS 와 DFS 개념  (0) 2020.09.23
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함