Skip to content

Commit

Permalink
doc: 자료구조와 알고리즘
Browse files Browse the repository at this point in the history
  • Loading branch information
JitHoon committed Apr 2, 2024
1 parent 53a9013 commit 4dd80e2
Showing 1 changed file with 84 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: 자료구조 한 번에 보기
description: 자료구조의 주요 개념을 외웁니다.
title: 자료구조와 알고리즘
description: 자료구조와 알고리즘의 주요 개념을 외웁니다.
slug: 자료구조
authors: 최지훈
tags: [Array, Linked List, Stack, Queue]
tags: [자료구조, 알고리즘]
image: /img/logo.svg
---

Expand Down Expand Up @@ -106,3 +106,84 @@ def solution(genres, plays):

return answer
```

## 재귀함수와 DFS (깊이 우선 탐색)

### 재귀함수

```python
def recursive(n):
if n == 0:
return
else:
print(n, end = ' ')
recursive(n-1)

recursive(5) # 5, 4, 3, 2, 1

def recursive(n):
if n == 0:
return
else:
recursive(n-1)
print(n, end = ' ')

recursive(5) # 1, 2, 3, 4, 5
```

재귀함수는 Stack 자료구조와 같이 동작한다.

cf 1. n! 구하기

```python
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)

factorial(5)

# Stack 처럼 생각
# factorial(1) = 1
# factorial(2) = 2 * factorial(1)
# factorial(3) = 3 * factorial(2)
# factorial(4) = 4 * factorial(3)
# factorial(5) = 5 * factorial(4)
```

cf 2. 피보나치 수열 구하기

```python
# 피보나치 수열 : [1, 1, 2, 3, 5, 8 ...]

def Fibonacci(n):
if n == 1 or n == 2:
return 1
else:
return Fibonacci(n-2) + Fibonacci(n-1)

Fibonacci(5)
```

### DFS (깊이 우선 탐색)

- 이진트리의 깊이 우선 탐색

cf.
부모 노드 * 2 = 왼쪽 노드
부모 노드 * 2 + 1 = 오른쪽 노드

```python
# 이진트리의 깊이 우선 탐색

def DFS(v):
if v > 7:
return
else:
print(v, end = ' ')
DFS(v * 2)
DFS(v * 2 + 1)

DFS(1) # 1, 2, 4, 5, 3, 6, 7
```

0 comments on commit 4dd80e2

Please sign in to comment.