์ ๋ฐ๋ฏธ ๊ฐ์ ๋ฅผ ๋ค์ผ๋ฉฐ ๋ง๋ ๊ณต๋ถ ์๋ฃ
๋ฐฑ์ค, ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์ ๋ฅผ ํ๊ณ ๋ธ๋ก๊ทธ์ ๊ธฐ๋ก์ ๋จ๊น (1์ผ 1solve 2022.04.17~ )
- Big-O ํ๊ธฐ๋ฒ
- ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋
- ๊ฐ๋จํ ๋ฌธ์ ํด๊ฒฐ ํจํด ์๊ฐ
sliding window
,two pointer
...
- base case
- ์ฌ๊ท ํจ์ ํจํด
- ์์ฃผ ๋ฐ์ํ๋ ์๋ฌ
- ์ด๋ถ ํ์ : O(N)
- ์ ํ ํ์ : O(logN)
- ๊ธฐ๋ณธ ์ ๋ ฌ (๋นํจ์จ์ - O(N^2))
- ๋ฒ๋ธ
- ์ ํ
- ์ฝ์
- ์ฌํ ์ ๋ ฌ (ํจ์จ์ - O(N logN))
- ํฉ๋ณ
- ํต
- ๊ธฐ์ (Radix Sort)
- ๋ฐฐ์ด์ ๋นํด ์ฝ์ , ์ ๊ฑฐ๊ฐ ๋น ๋ฆ
- ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Single Linked List)
- Head์์ Tail๊น์ง ํ ๋ฐฉํฅ์ผ๋ก๋ง ํ์ ๊ฐ๋ฅ
- ์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ (Double Lnked List)
- ์๋ฐฉํฅ ํ์ ๊ฐ๋ฅ
- ๋ฐฐ์ด ๋์ ๋จ์ผ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ์ง์ ๊ตฌํํ๋ฉด ์๊ฐ ๋ณต์ก๋๊ฐ ํจ์ฌ ์ ๋ฆฌ
- ์ฝ์ : O(1)
- ์ ๊ฑฐ : O(1)
- ํ์ : O(N)
- ์ ๊ทผ : O(N)
- ๋ฐฐ์ด์ ๋นํด ์ฝ์ , ์ ๊ฑฐ๊ฐ ๋น ๋ฅด๊ณ ํ์, ์ ๊ทผ์ ๋๋ฆผ
- ์คํ : ํ์ ์ ์ถ(LIFO)
- ํ : ์ ์ ์ ์ถ(FIFO)
-
์ผ๋ฐ ํธ๋ฆฌ, ์ด์ง ํธ๋ฆฌ, ์ด์ง ํ์ ํธ๋ฆฌ ๋ฑ์ ์ข ๋ฅ๊ฐ ์์
- ์ด์ง ํ์ ํธ๋ฆฌ(Binary Search Tree) ๋ฅผ ๊ฐ์ฅ ๋ง์ด ์
-
๋น์ ํ ์๋ฃ๊ตฌ์กฐ (๋ฆฌ์คํธ : ์ ํ ์๋ฃ ๊ตฌ์กฐ)
-
์ด์ง ํ์ ํธ๋ฆฌ
- ๊ฐ๋ค์ ๋ชจ๋ ์ ์ผํ ๊ฐ(unique)
- ๋ถ๋ชจ ๋ ธ๋์ ์ผ์ชฝ ์์ ๋ ธ๋๋ ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ์๊ณ ,
- ์ค๋ฅธ์ชฝ ๋์ ๋ ธ๋๋ ๋ถ๋ชจ ๋ ธ๋๋ณด๋ค ํฌ๋ค
-
ํธ๋ฆฌ์ ๋ชจ๋ ๋ ธ๋๋ฅผ 1๋ฒ์ฉ ๋ฐฉ๋ฌธํ๋ ๋ฐฉ๋ฒ 2๊ฐ์ง
- BFS(Breadth First Search) : ๋๋น ์ฐ์ ํ์
- ๋์ผํ depth์ ๋ ธ๋๋ฅผ ์ ๋ถ ๋ฐฉ๋ฌธํ๊ณ ๋์์ผ ๋ค์ depth๋ก ๋์ด๊ฐ
- DFS(Depth First Search) : ๊น์ด ์ฐ์ ํ์
- leaf๊น์ง ์ญ๋ด๋ ค๊ฐ๋ค๊ฐ sibling์ด ์๋ ๋ ธ๋์ ๋ค์ sibling์ ํ์ํ๋ฉฐ ๋ฐ๋ณต
- BFS(Breadth First Search) : ๋๋น ์ฐ์ ํ์
-
DFS 3๊ฐ์ง ๋ฐฉ๋ฒ
- ์ ์ ํ์ (pre order) : ๋ฃจํธ ๋ ธ๋๋ถํฐ ์์ํด์ ์ ์ผ ์ผ์ชฝ์ ๋จผ์ ๋ฐฉ๋ฌธ
- ํ์ ํ์ (post order) : ๋งจ ์ผ์ชฝ ๋ฆฌํ ๋ ธ๋๋ถํฐ ์์ํด์ ์๋ก ์ฌ๋ผ๊ฐ๋๋ฐ, ์ฐ์ธก ์์๋ ธ๋๊ฐ ์์ผ๋ฉด ๋ฐฉ๋ฌธ ํ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธ
- ์ค์ ํ์ (in order) : ๋งจ ์ผ์ชฝ ๋ฆฌํ ๋ ธ๋๋ถํฐ ์์ํด์ ์๋ก ์ฌ๋ผ๊ฐ๋๋ฐ, ๋ถ๋ชจ ๋ ธ๋ ๋ฐฉ๋ฌธ ํ ์ฐ์ธก ์์๋ ธ๋ ๋ฐฉ๋ฌธ
-
ํ = ์ด์ง ํธ๋ฆฌ์ ์ผ์ข
-
์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๋๋ฐ ์ฐ์ธ๋ค
-
์ด์ง ํ์ ํธ๋ฆฌ์ ๋น์ทํ๊ธฐ๋ ํ๋ฉฐ 2๊ฐ์ง ํ์ด ์กด์ฌ
- ์ต๋ ํ : ๋ถ๋ชจ ๋ ธ๋๋ ์ธ์ ๋ ์์ ๋ ธ๋๋ณด๋ค ํฌ๋ค
- ์ต์ ํ : ๋ถ๋ชจ ๋ ธ๋๋ ์ธ์ ๋ ์์ ๋ ธ๋๋ณด๋ค ์๋ค
-
์๊ฐ ๋ณต์ก๋
-
์ฝ์ : O(logN)
-
์ญ์ : O(logN)
-
ํ์ : O(N)
-
ํ์์ ์ด์ง ํ์ ํธ๋ฆฌ๊ฐ ๋ ๋น ๋ฅด๋ค
- ์ต์ ํ์ ์ฌ์ฉํด ๊ตฌํํ๋ฉฐ, ํ์ ๊ฐ ์์๋ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
- ์ฐ์ ์์๊ฐ ๋น ๋ฅธ ๋ ธ๋๊ฐ ๋ฃจํธ ๋ ธ๋๊ฐ ๋๋ค.
- ํ์ด๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋น ๋ฅธ pop ๋๋ ๋ ธ๋๋ ๋ฃจํธ ๋ ธ๋์ด๋ค.
- ํด์ ๋งต์ด๋ผ๊ณ ๋ ๋ถ๋ฆผ
- key : value pair ํํ๋ก ์ ์ฅ
- ์์(์ธ๋ฑ์ค)๊ฐ ์์
- ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ํ์, ์ถ๊ฐ, ์ ๊ฑฐ๊ฐ ๋งค์ฐ ๋น ๋ฆ (์์์๊ฐ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
- ์ ์ (vertex)๊ณผ 2๊ฐ์ ์ ์ ์ ์ฐ๊ฒฐํ๋ ๊ฐ์ (edge)์ผ๋ก ๊ตฌ์ฑ๋ ์๋ฃ๊ตฌ์กฐ
- ๊ฐ์ ์ ๋ฐฉํฅ์ด ์กด์ฌํ๋ฉด ๋ฐฉํฅ ๊ทธ๋ํ
- ๋ฐฉํฅ์ด ์์ผ๋ฉด ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ
- ๊ฐ์ ์ ์ซ์๊ฐ(๊ฐ์ค์น)์ ๊ฐ์ง ์๋ ์๋ค
- ๊ฐ์ค ๊ทธ๋ํ
- ๋น๊ฐ์ค ๊ทธ๋ํ
- ๊ทธ๋ํ ํํ๋ฐฉ๋ฒ
- ์ธ์ ๋ฆฌ์คํธ(Adjacency List) : ๊ฐ ์ ์ ์ ์ฐ๊ฒฐ๋ ์ ์ ์ 2์ฐจ์ ๋ฐฐ์ด ํํ๋ก ํ์
- ์ ์ ์ด ์ซ์๊ฐ ์๋, ๋ฌธ์์ด์ด๋ฉด ํด์ ํ ์ด๋ธ๋ก ํํ
- ์ธ์ ํ๋ ฌ(Adjacency Matrix) : boolean ๊ธฐ๋ฐ์ผ๋ก ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ 2์ฐจ์ ๋ฐฐ์ด ํํ๋ก ํ์
- ์คํ๋ ๋ ์ํธ
- ์ธ์ ๋ฆฌ์คํธ(Adjacency List) : ๊ฐ ์ ์ ์ ์ฐ๊ฒฐ๋ ์ ์ ์ 2์ฐจ์ ๋ฐฐ์ด ํํ๋ก ํ์
- ์๊ฐ ๋ณต์ก๋ ๋น๊ต
- ์ธ์ ๋ฆฌ์คํธ : ๋ฉ๋ชจ๋ฆฌ ๋ ์ฐจ์งํด์ ์ฃผ๋ก ์ฐ์, ๋น ๋ฅด๊ฒ ๋ชจ๋ ๊ฐ์ ์ํ ๊ฐ๋ฅ
- ์ธ์ ํ๋ ฌ : ํน์ ๊ฐ์ ์ฐพ๋ ๊ฒ์ ๋น ๋ฆ, ๋ฐ์งํ ๋ฐ์ดํฐ ๋ค๋ฃฐ ๋๋ง ์ข์