본문 바로가기

파이썬 DFS

[DFS][BFS] DFS와 BFS의 구조 DFS와 BFS의 구조의 표준을 다음부터 이 구조를 따라 문제를 해결하자. 해당 구조는 코드라이언의 "문제풀이로 배우는 자료구조와 알고리즘" 강의에서 배운 내용을 스스로 정리한 것이다. 1. DFS 1) DFS는 재귀함수로 구현하자. def dfs(list, position, visited) 와 같이 3개의 입력을 가지는 재귀함수 dfs를 만들자. 2) visited는 처음에 모두 False로 초기화 dfs 함수에 넣기 이전에, 미리 visited = [False]*(number of nodes) 로 초기화하자. (이때, number of nodes는 탐색하고자 하는 tree의 node 의 개수이다.) (node = vertex) 3) 이때, list는 tree의 연결 정보가 담겨있는 '인접리스트'면 좋.. 더보기
[DFS] [BFS] DFS by recursive function, BFS by queue DFS는 재귀함수로, BFS는 queue로 구현하는 복습. 아래의 코드는 코드라이언 "문제풀이로 배우는 자료구조와 알고리즘" 강좌의 코드와 유사합니다. 문제는 BOJ의 1932번이다. 문제 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습이다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있다. 삼각형의 크기는 1 이상 500 이하이다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 범위는 0 이상 9999 이하이다. 입력 첫째 줄에 삼.. 더보기