๐ต ํ์
: ๋ง์ ์์ ๋ฐ์ดํฐ ์ค์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋ ๊ณผ์
- ๊ทธ๋ํ, ํธ๋ฆฌ ๋ฑ์ ์๋ฃ๊ตฌ์กฐ ์์์ ํ์์ ํ๋ ๋ฌธ์ ๋ฅผ ์์ฃผ ๋ค๋ฃฌ๋ค
- ๋ํ์ ์ธ ํ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก DFS์ BFS๋ฅผ ๊ผฝ์ ์ ์๋ค.
- DFS์ BFS์ ๋ํด ์ ๋๋ก ์ดํดํ๊ธฐ ์ํด์ ์คํ๊ณผ ํ์ ๋ํ ์ดํด๊ฐ ์ ์ ๋์ด์ผํ๋ค.
๐ต ์๋ฃ๊ตฌ์กฐ
: ๋ฐ์ดํฐ๋ฅผ ํํํ๊ณ ๊ด๋ฆฌํ๊ณ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ตฌ์กฐ
- ์คํ๊ณผ ํ๋ฅผ ๊ตฌ์ฑํ๋ ํต์ฌ ํจ์
- ์ฝ์ (push) : ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ค
- ์ญ์ (pop) : ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ค
- ์ค๋ฒํ๋ก : ์ ์ฅ๊ณต๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๊ฐ๋ ์ฐฌ ์ํ์์ ์ฝ์ ์ฐ์ฐ์ ์ํํ ๋ ๋ฐ์
- ์ธ๋ํ๋ก : ๋ฐ์ดํฐ๊ฐ ์ ํ ๋ค์ด์์ง ์์ ์ํ์์ ์ญ์ ์ฐ์ฐ์ ์ํํ ๋ ๋ฐ์
โค๏ธ ์คํ (stack)
โ ์คํ์ ๊ทธ๋ฆ ์๊ธฐ์ ๋น์ ํ ์ ์๋ค. ๊ทธ๋ฆ์ ์๋์์๋ถํฐ ์๋ก ์ฐจ๊ณก์ฐจ๊ณก ์์์ผํ๋ค. ๊ทธ๋ฆฌ๊ณ ํญ์ ์์ ์๋ ๊ทธ๋ฆ๋ถํฐ ๋จผ์ ๋ด๋ ค์ผํ๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ์ ์ ํ์ถ (First In Last Out) ๊ตฌ์กฐ ๋๋ ํ์ ์ ์ถ (Last In First Out)๊ตฌ์กฐ๋ผ๊ณ ํ๋ค.
- ๊ฐ๋จํ ์์
stack=[] stack.append(5) stack.append(2) stack.append(3) stack.append(7) stack.pop() stack.append(1) stack.append(4) stack.pop() stack
- ๐ ์ฝ์ (5) → ์ฝ์ (2) → ์ฝ์ (3) → ์ฝ์ (7) → ์ญ์ () → ์ฝ์ (1) → ์ฝ์ (4) → ์ญ์ ()
ํ์ด์ฌ์์ ์คํ์ ์ด์ฉํ ๋์๋ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
append() ๋ฉ์๋๋ ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋ค์ชฝ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ณ , pop() ๋ฉ์๋๋ ๋ฆฌ์คํธ์ ๊ฐ์ฅ ๋ค์ชฝ์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด์ค๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ ๋ฆฌ์คํธ์์ append()์ pop() ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ์คํ ์๋ฃ๊ตฌ์กฐ์ ๋์ผํ๊ฒ ๋์ํ๋ค.
โค๏ธ ํ (queue)
โ ํ๋ ๋๊ธฐ์ค์ ๋น์ ํ ์ ์๋ค. ๋์ด๊ณต์์ ์ ์ฅํ๊ธฐ ์ํด ์ค์ ์ค๋ ๋จผ์ ์จ ์ฌ๋์ด ๋จผ์ ๋ค์ด๊ฐ๊ฒ ๋๋ค. ๋์ค์ ์จ ์ฌ๋์ผ์๋ก ๋์ค์ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ‘๊ณต์ ํ’ ์๋ฃ๊ตฌ์กฐ๋ผ๊ณ ๋น์ ๋๋ค. ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ์ ์ ์ ์ถ(First In First Out) ๊ตฌ์กฐ ๋ผ๊ณ ํ๋ค.
- ๊ฐ๋จํ ์์
โ deque๋ ์คํ๊ณผ ํ์ ์ฅ์ ์ ๋ชจ๋ ์ฑํํ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋นผ๋ ์๋๊ฐ ๋ฆฌ์คํธ ์๋ฃํ์ ๋นํด ํจ์จ์ ์ด๋ฉฐ queue ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํ๋ ๊ฒ๋ณด๋ค ๋ ๊ฐ๋จํ๋ค. ๋๋ถ๋ถ์ ์ฝ๋ฉ ํ ์คํธ์์ collections ๋ชจ๋๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ํ์ฉํ๋ฏ๋ก ์์ฌํ๊ณ ์ฌ์ฉํด๋ ๊ด์ฐฎ๋ค.from collections import deque queue=deque() queue.append(5) queue.append(2) queue.append(3) queue.append(7) queue.popleft() queue.append(1) queue.append(4) queue.popleft() queue
- ๐ ์ฝ์ (5) → ์ฝ์ (2) → ์ฝ์ (3) → ์ฝ์ (7) → ์ญ์ () → ์ฝ์ (1) → ์ฝ์ (4) → ์ญ์ ()
โค๏ธ ์ฌ๊ทํจ์
โ ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์ ํ๋ํธ ๊ตฌ์กฐ์ ํก์ฌํ๋ค.
def recursion_fun(count):
print('์ฌ๊ท')
if count==10:return
recursion_fun(count=count+1)
๐ ๋ฌดํํ ํธ์ถํ์ง ์๊ธฐ ์ํด์๋ ์ค๊ฐ์ ์ฌ๊ทํจ์์ ์ข ๋ฃ์กฐ๊ฑด์ ์ค์ ํด์ฃผ์ด์ผํ๋ค.
์ปดํจํฐ ๋ด๋ถ์์ ์ฌ๊ท ํจ์์ ์ํ์ ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ๋ค. ํจ์๋ฅผ ๊ณ์ ํธ์ถํ์ ๋ ๊ฐ์ฅ ๋ง์ง๋ง์ ํธ์ถํ ํจ์๊ฐ ๋จผ์ ์ํ์ ๋๋ด์ผ ๊ทธ ์์ ํจ์ ํธ์ถ์ด ์ข ๋ฃ๋๊ธฐ ๋๋ฌธ์ด๋ค.
- ํฉํ ๋ฆฌ์ผ ์์
def factorial(n):
if n==0 or n==1:
return 1
return n*factorial(n-1)
cf ) for๋ฌธ์ผ๋ก ๊ตฌํํด๋ณด๊ธฐ
def factorial_for(n):
result=1
if n>1:
for i in range(1,n+1):
result=result*i
return result
โ ์ฌ๊ทํจ์๋ก ๊ตฌํํ ๋์ for๋ฌธ์ผ๋ก ๊ตฌํํ ๋ ์คํ๊ฒฐ๊ณผ๋ ๋์ผํ๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ฐ๋ณต๋ฌธ ๋์ ์ ์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํ์ ๋ ์ป์ ์ ์๋ ์ฅ์ ์ ๋ฌด์์ผ๊น?
โผ๏ธ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋ค.
โผ๏ธ ์ฌ๊ทํจ์๊ฐ ์ ํ์์ ๊ทธ๋๋ก ์์ค์ฝ๋๋ก ์ฎ๊ธด๊ฒ์ด๋ค. → ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์ด์ด์ง๊ธฐ ๋๋ฌธ์ ์ค์ํ๋ค.
'python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[code signal / ์ฝ๋์๊ทธ๋] are Equally Strong (0) | 2022.05.30 |
---|---|
[code signal / ์ฝ๋์๊ทธ๋] Sort by height (0) | 2022.05.30 |
[code signal / ์ฝ๋ ์๊ทธ๋] alternatingSums (0) | 2022.05.30 |
[python] DFS(๊น์ด์ฐ์ ํ์) / BFS(๋๋น์ฐ์ ํ์) (0) | 2022.05.13 |
๋๊ธ