Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- css
- 네이버커넥트재단
- jquery
- MongoDB
- 스파르타코딩클럽
- sql
- GIT
- useState
- 프로그래머스
- 장고이미지처리
- 장고 다중이미지
- React
- 20492번
- 스파르타
- django multi image
- 반응형
- 파이썬무료강의
- 개인정보수집유효기간
- html
- 프론트엔드
- 22938번
- ㅐㄱ이
- error
- python
- 파이썬
- 코딩기초트레이닝
- 참가후기
- SEF2022
- 무료강의
- 프로그래머스입문
Archives
- Today
- Total
코딩,해볼까
DFS : 깊이 우선 탐색 본문
- 다음 분기로 넘어가기 전에 해당 분기를 완벽히 탐색하는 방법이다.
- 모든 노드 방문 여부 반드시 검사해야 한다.
- 순환 알고리즘 (= 재귀) 형태를 가진다.
- 구현방법
- 스택
- 재귀함수
- 인접 행렬, 인접 리스트
def dfs(v):
discovered = []
stack = [v]
while stack:
v = stack.pop()
if v not in discovered:
discovered.append(v)
for w in sorted(graph[v], reverse=True):
stack.append(w)
return discovered
print(dfs(1))
graph = [[], [2, 3, 4], [3, 5, 6], [2], [2], [3], [3]]
# 재귀
def DFS(graph, v, visited, discovered):
# 현재 위치 노드를 방문 처리
visited[v] = True
discovered.append(v) # 방문하고 나서 적기
for i in graph[v]:
if not visited[i]:
# discovered.append(i) # 방문하기 전에 적기
DFS(graph, i, visited, discovered)
return discovered
visited = [False] * len(graph)
v = 1
discovered = []
print(DFS(graph, v, visited, discovered))
▶ set 함수 https://wikidocs.net/16044
graph = {
1: set([2, 3, 4]),
2: set([3, 5, 6]),
3: set([2]),
4: set([2]),
5: set([3]),
6: set([3]),
}
▶ sort와 sorted
▶ dict와 list 에 따라서도 풀이법이 달라질 수 있다.
▶ 데이터타입 핸들링에 더더 익숙해지자.
'Back > TIL' 카테고리의 다른 글
08.22. 프로그래머스 : 체육복 (0) | 2023.08.22 |
---|---|
08.22. 프로그래머스 : 로또의 최고 순위와 최저 순위 (0) | 2023.08.22 |
08.20. 프로그래머스 : 개인정보 수집 유효기간 🔥 (0) | 2023.08.20 |
08.18. 프로그래머스 : 둘만의 암호 (0) | 2023.08.19 |
08.19. 프로그래머스 : 피보나치 수 (0) | 2023.08.19 |
Comments