์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ๋์ ๊ณํ๋ฒ
- IOS
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- Til
- concurrency
- URLSession
- GCD
- ๊ณ ๋์ kit
- SwiftUI
- algorithm
- BFS
- SwiftUI Tutorials
- APPJAM
- SwiftUI ํํ ๋ฆฌ์ผ
- GroupBy
- 0์ด๋์ด์๋๊ธธ
- Swift
- ํ๋ก๊ทธ๋๋จธ์ค
- dfs
- SOPT
- algoritm
- HAVIT
- DynamicProgramming
- ์ฐ์ํ์ค๋ถ๋ถ์์ด์ํฉ
- ์ด์งํ์
- duno
- binarySearch
- discardableResult
- SQL
- ๊ธฐ์ด๋ฌธ๋ฒ
- Today
- Total
suvera-dev ๐ฅฆ
Algorithm) ์๋ฃ๊ตฌ์กฐ ๊ธฐ์ด (Feat. DFS์ BFS์ ๋ค์ด๊ฐ๊ธฐ ์ ..) ๋ณธ๋ฌธ
Algorithm) ์๋ฃ๊ตฌ์กฐ ๊ธฐ์ด (Feat. DFS์ BFS์ ๋ค์ด๊ฐ๊ธฐ ์ ..)
suvera 2022. 4. 1. 08:31DFS์ BFS๋ฅผ ๋ค๋ฃจ๊ธฐ ์ .. ์ ๋ฉ๋ฆฌ ์๊ณ ์์๋ ์๋ฃ๊ตฌ์กฐ ๊ธฐ์ด ํํธ๊ฐ ์๊ธธ๋ ์ ๋ฆฌํด๋ด ๋๋ค !
โจ ํ์(Search)์ด๋ ? ๋ง์ ์์ ๋ฐ์ดํฐ ์ค์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์
- ํ๋ก๊ทธ๋๋ฐ์์๋ ๊ทธ๋ํ, ํธ๋ฆฌ ๋ฑ์ ์๋ฃ๊ตฌ์กฐ ์์์ ํ์์ ํ๋ ๋ฌธ์ ๋ฅผ ์์ฃผ ๋ค๋ฃจ๋๋ฐ ์ด ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฆฌ๋ฅผ ์ ๋๋ก ์ดํดํด์ผ ์ฝ๋ฉ ํ ์คํธ์ ํ์ ๋ฌธ์ ์ ํ์ ํ ์ ์์ต๋๋ค ! ๊ทธ๋ฐ๋ฐ,, DFS์ BFS ๋ฅผ ์ ๋๋ก ์ดํดํ๋ ค๋ฉด ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ์ธ ์คํ๊ณผ ํ์ ๋ํ ์ดํด๊ฐ ์ ์ ๋์ด์ผ ํ๋ฌด๋ก ์ด์ง ์ ๋ฆฌํ๊ณ ๊ฐ๋๋ค ~
๐ฟ ์๋ฃ๊ตฌ์กฐ๋? ๋ฐ์ดํฐ๋ฅผ ํํํ๊ณ ๊ด๋ฆฌํ๊ณ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ตฌ์กฐ !
- ๊ธฐ์ด ๊ฐ๋ ์ธ ์คํ๊ณผ ํ์์ Push, Pop ๊ณผ ๊ฐ์ ํต์ฌ์ ์ธ ํจ์ ์ด ์ธ์๋ ์ค๋ฒํ๋ก, ์ธ๋ํ๋ก๋ฅผ ๊ณ ๋ฏผํด์ผํ๋ค.
- ์ค๋ฒํ๋ก๋ ํน์ ํ ์๋ฃ๊ตฌ์กฐ๊ฐ ์์ฉํ ์ ์๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ ์ด๋ฏธ ๊ฐ๋ ์ฐฌ ์ํ์์ ์ฝ์ ์ฐ์ฐ์ ์ํํ ๋ ๋ฐ์
- ์ธ๋ํ๋ก๋ ํน์ ํ ์๋ฃ๊ตฌ์กฐ์ ๋ฐ์ดํฐ๊ฐ ์ ํ ๋ค์ด์์ง ์์ ์ํ์์ ์ญ์ ์ฐ์ฐ์ ์ํํ ๋ ๋ฐ์
1. ์คํ Stack
- ๋ฐ์ค ์๊ธฐ์ ๋น์ ํ ์ ์๋ค. ์ ์ ํ์ถ
- ํ์ด์ฌ์์ ์คํ์ ์ด์ฉํ ๋์๋ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
- ๊ธฐ๋ณธ ๋ฆฌ์คํธ์์ append() ์ pop() ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ์คํ ์๋ฃ๊ตฌ์กฐ์ ๋์ผํ๊ฒ ๋์
- append()๋ ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋ค์ชฝ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ณ , pop()์ ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋ค์ชฝ์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๊ธฐ ๋๋ฌธ !
2. ํ
- ๋๊ธฐ์ค์ ๋น์ ํ ์ ์๋ค. ์ ์ ์ ์ถ
- from collections import deque : ํ์ด์ฌ์ผ๋ก ํ๋ฅผ ๊ตฌํํ ๋๋ collections ๋ชจ๋์์ ์ ๊ณตํ๋
deque ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ์ ( queue = deque() )
- deque๋ ์คํ๊ณผ ํ์ ์ฅ์ ์ ๋ชจ๋ ์ฑํํ ๊ฒ์ธ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋บด๋ ์๋๊ฐ ๋ฆฌ์คํธ ์๋ฃํ์ ๋นํด ํจ์จ์ ์ด๋ฉฐ queue ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ ๊ฒ๋ณด๋ค ๊ฐ๋จํ๋ค !
- ๋๋ถ๋ถ ์ฝํ ์์ collections ๋ชจ๋๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ํ์ฉํ๋ค !
- deque ๊ฐ์ฒด๋ฅผ ๋ฆฌ์คํธ ์๋ฃํ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ ํ๋ค๋ฉด list() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ : list(queue)
3. ์ฌ๊ทํจ์
DFS์ BFD ๋ฅผ ๊ตฌํํ๋ ค๋ฉด ์ฌ๊ทํจ์๋ ์ดํดํด์ผ๋๋ค !
- ์๊ธฐ ์์ ์ ๋ค์ ํธ์ถํ๋ ํจ์
- ํ์ด์ฌ ์ธํฐํ๋ฆฌํฐ๋ ํธ์ถ ํ์ ์ ํ์ด ์์ด์ ์ฌ๊ทํจ์๊ฐ ๊ณ์ ํธ์ถ๋๋ค๊ฐ ์ฌ๊ท์ ์ต๋ ๊น์ด๋ฅผ ์ด๊ณผํ์ ๋ ์ค๋ฅ๋ฉ์์ง๊ฐ ๋ฌ๋ค ! ( ๋ฌดํ๋๋ก ์ฌ๊ทํธ์ถ์ ์งํํ ์ ์๋ค. ๊ทธ๋ฐ ๋ฌธ์ ๋ํ ์ถ์ ๋์ง ์์ ๊ฒ ! )
๐ ์ฌ๊ทํจ์์ ์ข ๋ฃ ์กฐ๊ฑด
์ฌ๊ท ํจ์๋ฅผ ๋ฌธ์ ํ์ด์์ ์ฌ์ฉํ ๋๋ ์ฌ๊ท ํจ์๊ฐ ์ธ์ ๋๋ ์ง, ์ข ๋ฃ ์กฐ๊ฑด์ ๊ผญ ๋ช ์ํด์ผ ํ๋ค.
์ข ๋ฃ์กฐ๊ฑด์ ๋ช ์ํ์ง ์์ ๊ฒฝ์ฐ, ํจ์๊ฐ ๋ฌดํ ํธ์ถ๋ ์ ์๋ค.
def recursive_function(i):
#100๋ฒ์งธ ์ถ๋ ฅํ์๋ ์ข
๋ฃ๋๋๋ก ์ข
๋ฃ์กฐ๊ฑด ๋ช
์
if i == 100:
return
print(i,'๋ฒ์งธ ์ฌ๊ทํจ์์์' , i+1,'๋ฒ์งธ ์ฌ๊ทํจ์ ํธ์ถ')
recursive_function(i+1)
print(i, '๋ฒ์งธ ์ฌ๊ทํจ์๋ฅผ ์ข
๋ฃ')
recursive_function(1)
- ์ปดํจํฐ ๋ด๋ถ์์ ์ฌ๊ทํจ์์ ์ํ์ ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉ
- ํจ์๋ฅผ ๊ณ์ ํธ์ถํ์ ๋ ๊ฐ์ฅ ๋ง์ง๋ง์ ํธ์ถํ ํจ์๊ฐ ๋จผ์ ์ํ์ ๋๋ด์ผ ๊ทธ ์์ ํจ์ ํธ์ถ์ด ์ข ๋ฃ๋๊ธฐ ๋๋ฌธ !
- ๋ด๋ถ์ ์ผ๋ก ์คํ ์๋ฃ๊ตฌ์กฐ์ ๋์ผํ๋ค !
- ๋ฐ๋ผ์ , ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํด์ผํ๋ ์๋น์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด์ ๊ฐํธํ๊ฒ ๊ตฌํ๋ ์ ์๋ค !
- ๋ํ์ ์ธ ์๊ฐ DFS
- ํฉํ ๋ฆฌ์ผ ๋ฌธ์ : n! = 1 x 2 x 3 x ... x (n-1) x n -> ์ํ์ ์ผ๋ก 0! ๊ณผ 1!์ ๊ฐ์ 1๋ก ๊ฐ๋ค๋ ์ฑ์ง์ ์ด์ฉํ์ฌ ํฉํ ๋ฆฌ์ผ ํจ์๋ n ์ด 1 ์ดํ๊ฐ ๋์์ ๋ ํจ์๋ฅผ ์ข ๋ฃํ๋ ์ฌ๊ทํจ์์ ํํ๋ก ๊ตฌํํ ์ ์๋ค !
# ๋ฐ๋ณต์ ์ผ๋ก ๊ตฌํํ n!
def factorial_iterative(n):
result = 1
for i in range(1, n+1):
result *= i
return result
# ์ฌ๊ท์ ์ผ๋ก ๊ตฌํํ n!
def factorial_recursive(n):
if n <= 1:
return 1
return n + factorial_recursive(n-1)
- ์คํ ๊ฒฐ๊ณผ๋ ๋์ผ ! ์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํ์๋ ์ฝ๋๊ฐ ๋ ๊ฐ๊ฒฐํจ .
- ์ ? ์ํ์ ์ ํ์์ ๊ทธ๋๋ก ์์ค์ฝ๋๋ก ์ฎ๊ฒผ๊ธฐ ๋๋ฌธ !
- ์ ํ์ ? ํน์ ํ ํจ์๋ฅผ ์์ ๋ณด๋ค ๋ ์์ ๋ณ์์ ๋ํ ํจ์์์ ๊ด๊ณ๋ก ํํํ ๊ฒ์ ์๋ฏธ
- ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์ ํ์์์ ์ข ๋ฃ์กฐ๊ฑด์ ์ฐพ์ ์ ์๋ค n์ด 0 ๋๋ 1์ผ๋
- ์์ ์ ์์ผ๋๋ง ์ ํจ : n ์ด 1 ์ดํ์ธ ๊ฒฝ์ฐ 1์ ๋ฐํ
- ์์๊ฐ์ผ ๋ ? ์ ๋ ฅ ๋ฒ์์ค๋ฅ !
์ฌ๊ธฐ๊น์ง DFS ์ BFS ํ๊ธฐ์ ์ ํ์ํ ์๋ฃ๊ตฌ์กฐ ๊ธฐ์ด ๊ฐ๋ ์ ์ดํด๋ดค๋ค >> ์ด์ ์ฐ DFS BFS ํ๋ฌ ๊ฐ๋ณด์๊ณ ~
'Algorithm > CodingTest - Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Algorithm) DFS/BFS ์ค์ ๋ฌธ์ (0) | 2022.04.02 |
---|---|
Algorithm) DFS/BFS (0) | 2022.04.02 |
Algorithm ) Implementation (0) | 2022.04.01 |
Algorithm ) Greedy (2) (2) | 2022.02.06 |
Algorithm ) Greedy (0) | 2022.02.05 |