๐ ์ค๋ ๋ฐฐ์ด ๋ด์ฉ!
- ํธ๋ฆฌ ์ํ (Tree traversal)
- ๊ทธ๋ํ ํ์ ( BFS / DFS )
- Deque
- ๋ฐฐ์ด / Linked List
- Hash Table )
[์ฐธ๊ณ ] https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
( ๋จผ์ , ์ฌ๊ธฐ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ป๊ฒ ์ ์ฅ๋๊ณ ์์ฑ๋๋์ง ๋์ผ๋ก ๋ณผ ์ ์๋ ์ฌ์ดํธ! )
โ๏ธ ํธ๋ฆฌ ์ํ (Tree traversal)
- ํน์ ๋ชฉ์ ์ ์ํด ํธ๋ฆฌ์ ๋ชจ๋ ๋
ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ ๊ฒ
( ์์๋ ํญ์ ์ผ์ชฝ โ ์ค๋ฅธ์ชฝ )
1. ์ ์ ์ํ (preorder traverse)
๐ ๋ฃจํธ ๋
ธ๋ โ ์ผ์ชฝ ์์ ๋
ธ๋ โ ์ค๋ฅธ์ชฝ ์์ ์์
2. ์ค์ ์ํ (inorder traverse)
๐ ์ผ์ชฝ ์์ โ ๋ฃจํธ ๋ ธ๋ โ ์ค๋ฅธ์ชฝ ์์ ์์
3. ํ์ ์ํ (postorder traverse)
๐ ๋ฃจํธ ๋ ธ๋ โ ์ผ์ชฝ ์์ ๋ ธ๋ โ ์ค๋ฅธ์ชฝ ์์ ์์
โ๏ธ ๊ทธ๋ํ ํ์ ( BFS / DFS )
- ํ๋์ ์ ์ ์์ ์์ํ์ฌ ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ๋ค์ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธ(ํ์)ํ๋ ๊ฒ์ด ๋ชฉ์
( ๊ทธ๋ํ์ ๋ฐ์ดํฐ๋ ๋ฐฐ์ด์ฒ๋ผ ์ ๋ ฌ์ด ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ ํ๋์ฉ ๋ชจ๋ ๋ฐฉ๋ฌธํ์ฌ ์ฐพ์์ผํจ )
1. ๋๋น ์ฐ์ ํ์ BFS ( Breadth-First Search )
โ ๊ฐ๊น์ด ์ ๋ถํฐ ๋ชจ๋ ํ์ ํ, ๊ทธ ๋ค์์ผ๋ก ๊ฐ๊น์ด ์ ํ์
โ ๋ ์ ์ ์ฌ์ด์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ๋ ์ฌ์ฉ
โ ๊ฒ์ ๋์์ ๊ท๋ชจ๊ฐ ํฌ์ง ์๊ณ , ๊ฒ์ ์์ ์ง์ ์ผ๋ก๋ถํฐ ์ํ๋ ๋์์ด ๋ณ๋ก ๋ฉ์ง ์๋ค๋ฉด ์ฌ์ฉ
โ ๊ฒ์ ์๋ ์์ฒด๋ DFS์ ๋นํด ๋ ๋น ๋ฆ
โ ๋ณดํต Queue๋ฅผ ์ด์ฉํด ๋ฌธ์ ํ
2. ๊น์ด ์ฐ์ ํ์ DFS ( Depth-First Search )
โ ํ๋์ ๊ฒฝ๋ก๋ฅผ ๋๊น์ง ํ์ ํ, ๋ค์ ๊ฒฝ๋ก๋ก ๋์ด๊ฐ ํ์
โ ๊ฒ์ ๋์ ๊ทธ๋ํ๊ฐ ์ ๋ง ํฌ๋ค๋ฉด ์ฌ์ฉ
โ ๊ฐ๊ฐ์ ๊ฒฝ๋ก๋ง๋ค ํน์ง์ ์ ์ฅํด๋ฌ์ผ ํ ๋, ์ค๊ฐ์ ์ฅ์ ๋ฌผ์ด ์์ ๋ ์ฌ์ฉ
( BFS๋ ๊ฒฝ๋ก์ ํน์ง์ ๊ฐ์ง์ง ๋ชปํจ )
โ ๋ณดํต Stack์ด๋ ์ฌ๊ท๋ฅผ ์ด์ฉํด ๋ฌธ์ ํ
( Stack์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๊ฐ ์์ฌ์์ ๋ ๋งํ๋ฉด ๊ทธ๊ฑฐ ์์ ๊ณ ๋ค๋ฅธ ๊ฒฝ๋ก ๋ค์ ์์ )
( ์ฌ๊ท์ ๊ฒฝ์ฐ ์ฅ์ ๋ฌผ์ ๋งํ๋ฉด ์ด์ ์ฌ๊ทํธ์ถ ์์ ์ผ๋ก ๋์๊ฐ์ ๊ฒฝ๋ก ์ฐพ์ )
โ๏ธ Deque (Double Ended Queue)
- ์๋ฐฉํฅ์ผ๋ก ์ด๋ ค์๋ ๊ตฌ์กฐ
- Queue์ ๋น์ทํ ๋ชจ์ต์ ๊ฐ์ง๊ณ ์๊ณ Stack๊ณผ Queue์ ํน์ง์ ๋ชจ๋ ๊ฐ์ง
โ ์ด๋ ์ชฝ์์๋ ๋ค์ด๊ฐ๊ณ ๋๊ฐ ์ ์์ !
( ์์์ In ํ์ ๋, ๊ฐ์ ๋ฐฉํฅ์ผ๋ก Out ํ๋ค๋ฉด Stack๊ณผ ๊ฐ์ ๊ตฌ์กฐ / ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก Out ํ๋ค๋ฉด Queue์ ๊ฐ์ ๊ตฌ์กฐ ( Out ๋จผ์ ํ์ ๋๋ ๊ฐ์ )) - ์๋ฐฉํฅ ๋์์ ๋ฐ์ดํฐ ์ถ๊ฐ, ์ญ์ ๊ฐ ์ฉ์ด
โ ์๋ฐฉํฅ ๋์ด ์๋ ์์์ ๋ฐ์ดํฐ๋ง ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ๊ฑด ๋ถ๊ฐ๋ฅ
โ๏ธ ๋ฐฐ์ด / Linked List
1) ๋ฐฐ์ด
- ์ฐ์๋ ๊ณต๊ฐ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง
- ๋ฉ๋ชจ๋ฆฌ ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ผ๋ ค๋ฉด ๊ทธ ๋ค์ ๋ฐ์ดํฐ๋ค์ด ๋ชจ๋ ํ์นธ์ฉ ๋ค๋ก ์ด๋ํด์ผํจ
2) Linked List
- ํฉ์ด์ ธ ์๋ ๊ณต๊ฐ์ ๋ ธ๋๋ค์ ์ฐ๊ฒฐ (๋ชจ๋ ๋ ธ๋๊ฐ ์๋ก์ ์ฃผ์๊ฐ๋ค๋ก ์ฐ๊ฒฐ)
- ์ง์ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์์ด์ผ ๋ค์ ๋
ธ๋๋ก ์ ๊ทผ ๊ฐ๋ฅ
โ ๋ ธ๋๊ฐ ์ฐพ์ผ๋ ค๋ฉด ์ ์ฒด ์ํํด์ผํจ
( ๋ฉ๋ชจ๋ฆฌ์ ํฉ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ๊ทผ ๋ถ๊ฐ )
( ์ํ ์ ๊น์ง๋ ์ฒซ๋ฒ์งธ ๋ ธ๋์ธ head node์ ์ ๋ณด๋ง ์๊ณ , ์ ๋ถ ์ํํด์ผ ๋ง์ง๋ง ์์ ํ์ธ ๊ฐ๋ฅ ) - ๋ง์ง๋ง ๋ ธ๋๋ ๊ฐ๋ฆฌํฌ ๊ณณ์ด ์์ด null ๊ฐ๋ฆฌํด
- ๋
ธ๋์ ์ถ๊ฐ/์ญ์ ๊ฐ ๋น ๋ฅด๊ณ ์ฌ์
( ๋ฃ์ ์์น ์ ๋ค ๋ ธ๋์ ์ฃผ์๊ฐ์ ํด๋น ๋ ธ๋์ ์ฃผ์๊ฐ์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ๋ง ํด์ฃผ๋ฉด ๊ฐ๋ฅ )
โ๏ธ Hash Table
- ํด์ํจ์(hash function)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํํ ํด์(hash)๋ฅผ ์์ธ(index)์ผ๋ก ์ผ์ ํค(key)์ ๋ฐ์ดํฐ(value)๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
( ํ์ํ ๋ฐ์ดํฐ์ ํค(key)๋ฅผ ํด์ํจ์๋ฅผ ์ฌ์ฉํด ๋ณ๋์ ํด์(hash)๋ก ๋ฐ๊ฟ ์ฃผ๊ณ , ํด๋นํ๋ ๋ฐ์ดํฐ(value)๋ฅผ ํจ๊ป ์ ์ฅ ) - ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์์ ์ด ๋งค์ฐ ๋น ๋ฆ
- ํด์ ์ถฉ๋ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์์ / ๋ฐ์ดํฐ ์ ์ฅ ์ ๋ฏธ๋ฆฌ ๊ณต๊ฐ ๋ง๋ค์ด๋์ผ ํจ
โ ๊ณต๊ฐ ํจ์จ์ฑ ๋จ์ด์ง - ํด์ ํจ์๊ฐ ๋ณต์กํ ๊ฒฝ์ฐ ํด์๊ฐ ๋ง๋ค์ด๋ด๋ ๋ฐ ๋ง์ ์๊ฐ ์์
โ Hash Table ๊ตฌ์กฐ
- ํค(key)์ ํด์ํจ์(hash function), ํด์(hash), ๋ฐ์ดํฐ(value)๋ก ์ด๋ฃจ์ด์ง
- ํค(key)
โ ํด์ ํจ์์ ์ ๋ ฅ๊ฐ์ธ ๊ณ ์ ํ ๊ฐ ( ๋ค์ํ ๊ธธ์ด์ ๊ฐ์ด ๋ค์ด์ฌ ์ ์์ )
โ ํด์ ํจ์๋ฅผ ํตํด ๋ณํํ์ง ์์ ์ํ๋ก ์ ์ฅ์์ ์ ์ฅ์ด ๋๋ฉด ๋ค์ํ ๊ธธ์ด๋งํผ์ ์ ์ฅ์๋ฅผ ๊ตฌ์ฑํด ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ํด์ ํจ์๋ก ๊ฐ์ ๋ฐ๊พธ์ด ์ ์ฅ
- ํด์ํจ์ (hash Function)
โ ํค(key)๋ฅผ ํด์(hash)๋ก ๋ฐ๊ฟ์ฃผ๋ ์ญํ
โ ๋ค์ํ ๊ธธ์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํค(key)๋ฅผ ์ผ์ ํ ๊ธธ์ด๋ฅผ ๊ฐ์ง๋ ํด์(hash)๋ก ๋ณ๊ฒฝํ์ฌ ์ ์ฅ์๋ฅผ ํจ์จ์ ์ผ๋ก ์ด์ํ ์ ์๋๋ก ๋์์ค
โ ํด์ ์ถฉ๋์ ์ผ์ผํค๋ ํ๋ฅ ์ ์ต๋ํ ์ค์ด๋ ๊ฒ์ด ์ค์
( ํด์ ์ถฉ๋(hash Collision) - ์๋ก ๋ค๋ฅธ ํค(key)๊ฐ ๊ฐ์ ํด์(hash)๊ฐ ๋๋ ๊ฒฝ์ฐ )
- ํด์ (hash)
โ ํค(key)๋ฅผ ํด์ํจ์(hash function)๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด์ง ๊ฒฐ๊ณผ๋ฌผ
โ ์ ์ฅ์์์ ๋ฐ์ดํฐ(value)์ ๋งค์นญ๋์ด ์ ์ฅ ๋ณํ๋ ๊ฐ์ ๋ฐฐ์ด์ ์์ธ(index)๊ณผ ๊ฐ์ด ์ฌ์ฉ
- ๋ฐ์ดํฐ (value)
โ ์ ์ฅ์์ ์ต์ข ์ ์ผ๋ก ์ ์ฅ๋๋ ๊ฐ
โ ์์ธ(index)๊ณผ ๋งค์นญ๋์ด ์ ์ฅ
๐ ๋๋์
์ฌ์ค ๊ฐ๋
์ ์ผ๋ก๋ ๊ด์ฐฎ๋ค ๋ฌธ์ ์ ์์ฉํ๊ธฐ ์ด๋ ค์ธ ๋ฟ!!
Section2๋๊ณ ๋์ ์ปจํ
์ธ ๊ฐ ๋ญ๊ฐ ๊ฐ๋
๋ง ์ค๋ช
์ด ๋์ด์๊ณ ์ด๋ป๊ฒ ์์ฉํ๋์ง๋ ๋์์์ง ์์์ ์ง์ ํ๋ํ๋ ๋ค ์ฐพ์๋ณด๋ฉฐ ํ์ต์ ํด์ผํ๋ ๊ฒ ๊ฐ๋คใ
๊ฐ๋
์ ๋นํด ๋ฌธ์ ๋์ด๋๊ฐ ๋๋ฌด ์ด๋ ต๋ค๊ตฌ์ฌใ
ใ
์ด๋ป๊ฒ ํธ๋์ง ๊ฐ์ ์ก์ผ๋ฉด ๊ด์ฐฎ์๋ฐ
๊ทธ๋ฐ ์์ ๋ค์ด ์์ผ๋ ๊ฐ์ ์ก๊ธฐ๊ฐ ์ฝ์ง ์๋ค,,
๊ทธ๋๋ ์ค๋์ ์ด์ ๋ณด๋ค ์ข ๋ ๋นจ๋ฆฌ ์ดํดํ๋ค! ๊ทธ๋๋ ๋ฌธ์ ๋ฅผ ํ ๋์ ๊ทธ๋ํ๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๋์ง์ ๋ํ ํฐ ํ์ ๊ฐ์ด ์กํ ๊ฒ ๊ฐ๋ค ใ
ใ
( ๋ณธ ๊ฒ์๋ฌผ์ 2022/09/26์ ์์ฑํ ๊ธ์ ์ฎ๊ธด ๊ธ์ ๋๋ค. ์๋ฌธ์ ์๊ธฐ์ ์์! )
'โข CodeStates BootCamp > Section 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ [Section2] 7. ์๊ณ ๋ฆฌ์ฆ with Math (0) | 2023.04.07 |
---|---|
๐ [Section2] 6. ์๊ณ ๋ฆฌ์ฆ (0) | 2023.04.07 |
๐ [Section2] 4. ์๋ฃ๊ตฌ์กฐ2 (0) | 2023.04.07 |
๐ [Section2] 3. ์๋ฃ๊ตฌ์กฐ1 (0) | 2023.04.07 |
๐ [Section2] 2. JSON (0) | 2023.04.07 |