- spring์ผ๋ก https ์ ์ฉ
- ์์คํ ์ํํธ์จ์ด
- OpenAPI
- Rp2๊ธฐ
- ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ
- MAKE US
- Data Structure
- MethodArgumentNotValidException
- C++
- spring ์์ ๋ก๊ทธ์ธ
- Java
- GIT
- node js
- Quick Sort
- datagrip
- ํจ์คํธ์บ ํผ์คX์ผ๋์
- SQL
- ๋ฆฌ๋ ์ค ๋ช ๋ น์ด
- Unity
- @CreatedDate
- SSL
- aligoapi
- spring ๊ตฌ๊ธ ์์ ๋ก๊ทธ์ธ
- java error
- mysql
- docker
- merge sort
- Spring
- DATABASE
- RP 2๊ธฐ
YS's develop story
๋๋น ์ฐ์ ํ์ (BFS), ๊น์ด ์ฐ์ ํ์ (DFS) ์ ๋ฆฌ ๋ณธ๋ฌธ
๐ฉ๐ป ๋๋น ์ฐ์ ํ์ (BFS), ๊น์ด ์ฐ์ ํ์ (DFS) ์ ๋ฆฌ with Python
๐ฅ ๋๋น ์ฐ์ ํ์ (Breadth-First-Search)
Node ๊ฐ์ ๋ ๋ฒจ์ ์๋ Node๋ค (ํ์ Node๋ค)์ ๋จผ์ ํ์ํ๋ ๋ฐฉ์์ ๋๋ค.
ํ์ด์ฌ์ ์ด์ฉํ ๊ทธ๋ํ ํํ ์ฝ๋
graph = dict()
graph['A'] = ['B', 'C']
graph['B'] = ['A', 'D']
graph['C'] = ['A', 'G', 'H', 'I']
graph['D'] = ['B', 'E', 'F']
graph['E'] = ['D']
graph['F'] = ['D']
graph['G'] = ['C']
graph['H'] = ['C']
graph['I'] = ['C', 'J']
graph['J'] = ['I']
๋๋น ์ฐ์ ํ์ (Breadth-First-Search) ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ
def BFS(graph, startNode):
visited,needVisited = list(),list()
needVisited.append(startNode)
while needVisited:
node = needVisited.pop(0)
if node not in visited:
visited.append(node)
needVisited.extend(graph[node])
return visited
์๋ฃ๊ตฌ์กฐ Queue๋ฅผ ํ์ฉํ์ฌ์
visited์ needVisited ๋ ๊ฐ์ Queue๋ฅผ ์์ฑํ์ฌ์ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํํ๊ฒ ๋ฉ๋๋ค.
Queue์ ๊ทํ์ ๊ฐ๋จํ ํ์ด์ฌ ๋ฆฌ์คํธ๋ฅผ ํ์ฉํฉ๋๋ค.
์ฝ๋ ์คํ ๊ฒฐ๊ณผ
๐ณ ๊น์ด ์ฐ์ ํ์ (Depth-First-Search)
Node์ Child๋ค์ ๋จผ์ ํ์ํ๋ ๋ฐฉ์์ ๋๋ค.
๊น์ด ์ฐ์ ํ์ (Depth-First-Search) ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ
def BFS(graph, startNode):
visited,needVisited = list(),list()
needVisited.append(startNode)
while needVisited:
node = needVisited.pop()
if node not in visited:
visited.append(node)
needVisited.extend(graph[node])
return visited
์๋ฃ๊ตฌ์กฐ Stack๊ณผ Queue๋ฅผ ํ์ฉํ๊ฒ ๋ฉ๋๋ค.
needVisited Stack๊ณผ visited Queue, ๋ ๊ฐ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ฑํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ฒ ๋ฉ๋๋ค.
Queue์ Stack์ ๊ฐ๋จํ ํ์ด์ฌ ๋ฆฌ์คํธ๋ฅผ ํ์ฉํ์์ต๋๋ค.
์ฝ๋ ์คํ ๊ฒฐ๊ณผ
BFS ์๋ฃ๊ตฌ์กฐ๋ ๋ ๊ฐ์ Queue๋ฅผ ํ์ฉํ๋๋ฐ ๋ฐํด,
DFS๋ Stack๊ณผ Queue๋ฅผ ํ์ฉํ๋ค๋ ์ฐจ์ด๊ฐ ์์์ ํ์ธํฉ์๋ค!
๐ช ์๊ฐ ๋ณต์ก๋
์ผ๋ฐ์ ์ธ DFS ์๊ฐ ๋ณต์ก๋
- ๋ ธ๋ ์: V
- ๊ฐ์ ์: E
- ์ ์ฝ๋์์ while need_visit ์ V + E ๋ฒ ๋งํผ ์ํํ๊ฒ ๋ฉ๋๋ค.
- ์๊ฐ ๋ณต์ก๋: O(V + E)
์ผ๋ฐ์ ์ธ BFS ์๊ฐ ๋ณต์ก๋
- ๋ ธ๋ ์: V
- ๊ฐ์ ์: E
- ์ ์ฝ๋์์ while need_visit ์ V + E ๋ฒ ๋งํผ ์ํํ๊ฒ ๋ฉ๋๋ค.
- ์๊ฐ ๋ณต์ก๋: O(V + E)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ (0) | 2021.08.14 |
---|---|
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ (0) | 2021.08.13 |
์์ฐจ ํ์, ์ด์ง ํ์ ์ ๋ฆฌ (2) | 2021.08.01 |
ํต ์ ๋ ฌ (Quick Sort) ์ ๋ฆฌ (0) | 2021.07.31 |
๋ณํฉ ์ ๋ ฌ (Merge Sort) ์ ๋ฆฌ (0) | 2021.07.31 |