๐ ์ด์ ์ปค๋ฆฌํ๋ผ ์ค ํ์ต์ ํ๋ ์๊ฐ์์ ๋จ์ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ ๋ฐ์ ๋จ์ง ์์๋ค. ๋ค์ํ ๋ด์ฉ์ ํ์ตํ๊ณ ๋ฐฐ์ฐ๋ฉด์ ๋์ ์ค๋ ฅ์ ๋ํด์ ๊นจ๋ฌ์๋ ์๊ฐ์ด์๊ณ ๋ง์ ๊ฒ์ ๋ฐฐ์์ผ๋ก ๋์ ์ญ๋์ ์ฑ์ฅ์ํฌ ์ ์๋ ๊ณ๊ธฐ๊ฐ ๋์๋ค. ๋จ์ ์๊ณ ๋ฆฌ์ฆ ํ์ต๊น์ง ๋๋ง์น๊ณ ํ๋ก์ ํธ์ ๋ค์ด๊ฐ ๋ ํ์๋ค๊ณผ ์ํํ ํ์ ์ ํตํด ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์ ์ ์๋๋ก ํด๋ณด์!!
๐ ์ค๋ ํ์ตํ ๋ด์ฉ
์๊ณ ๋ฆฌ์ฆ
- ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ต์ ์ ์ ํ
- ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์ผ๋ จ์ ์ ์ฐจ๋ฅผ ์ ์ํ๊ณ , ๊ณต์ํํ ํํ๋ก ํํํ ์ผ์ข ์ ๋ฌธ์ ์ ํ์ด ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค.
์๊ณ ๋ฆฌ์ฆ์ ๋ช ์ ์กฐ๊ฑด
- ์ ๋ ฅ: ์ถ๋ ฅ์ ํ์ํ ์๋ฃ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์์ด์ผํ๋ค. ๊ผญ ์ ๋ ฅ์ ๋ฐ์ง ์์๋ ๋๋ ์๊ณ ๋ฆฌ์ฆ๋ ์๋ค.
- ์ถ๋ ฅ: ์คํ์ด ๋๋ฉด ์ ์ด๋ ํ ๊ฐ์ง ์ด์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋์ ์ถ๋ ฅํด์ผํ๋ค.
- ์ ํ์ฑ: ์ ํํ ๋ช ๋ น์ด๋ฅผ ์ํํ ํ, ์ ํํ ์๊ฐ ๋ด์ ์ข ๋ฃํด์ผ ํ๋ค.
- ๋ช ํ์ฑ: ๊ฐ ๋จ๊ณ๋ ๋จ์ํ๊ณ ๋ช ํํด์ผ ํ๋ฉฐ, ๋ชจํธํด์๋ ์๋๋ค.
- ํจ์จ์ฑ: ๊ฐ๋ฅํ ํ ํจ์จ์ ์ด์ด์ผ ํ๋ค. ๋ชจ๋ ๊ณผ์ ์ด ๋ช ๋ฐฑํ๊ฒ ์คํ ๊ฐ๋ฅํด์ผ ํ๋ฉฐ, ์คํ ๊ฐ๋ฅ์ฑ์ด ๋จ์ด์ง๋ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ ์ด์ง ๋ชปํ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ ๋ณผ ์ ์๋ค.
์๊ฐ ๋ณต์ก๋
์ ๋ ฅ๊ฐ์ ๋ณํ์ ๋ฐ๋ผ ์ฐ์ฐ์ ์ํํ ๋ , ์ฐ์ฐ ํ์์ ๋นํด ๊ฑธ๋ฆฌ๋ ์๊ฐ
- ์๊ฐ ๋ณต์ก๋ ํ๊ธฐ ๋ฐฉ๋ฒ
- Big-O(๋น
-์ค)
- ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ ํ๊ธฐ๋ฒ
- ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ฌ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๊ณผ์ ์์ ์์๋๋ ์ต์ ์ ์๊ฐ๊น์ง ๊ณ ๋ คํ ์ ์๋ค.
- Big-Ω(๋น -์ค๋ฉ๊ฐ)
- Big-θ(๋น -์ธํ)
- Big-O(๋น
-์ค)
Big-O ํ๊ธฐ๋ฒ์ ์ข ๋ฅ
- O(1): Constant complexity
- ์ ๋ ฅ๊ฐ์ด ์ฆ๊ฐํ๋๋ผ๋ ์๊ฐ์ด ๋์ด๋์ง ์๋๋ค.
- ์ ๋ ฅ๊ฐ์ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ์ฆ์ ์ถ๋ ฅ๊ฐ์ ์ป์ด๋ผ ์ ์๋ค.
- O(n): linear complexity
- ์ ๋ ฅ๊ฐ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์๊ฐ ๋ํ ๊ฐ์ ๋น์จ๋ก ์ฆ๊ฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค. (1์ค for๋ฌธ)
- O(log n): logarithmic complexity
- O(1) ๋ค์์ผ๋ก ๋น ๋ฅธ ์๊ฐ ๋ณต์ก๋์ด๋ค.
- Binary Search Tree์ ๊ฐ์ ์ด๋ํ ๋๋ง๋ค ๊ฒฝ์ฐ์ ์๊ฐ ์ ๋ฐ์ผ๋ก ์ค์ด๋๋ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- O(n2): quadratic complexity
- ์ ๋ ฅ๊ฐ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์๊ฐ์ด n์ ์ ๊ณฑ์์ ๋น์จ๋ก ์ฆ๊ฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค. (2์ค for๋ฌธ์ด์)
- O(2^n): exponential complexity
- Big-O ํ๊ธฐ๋ฒ ์ค ๊ฐ์ฅ ๋๋ฆฐ ์๊ฐ ๋ณต์ก๋ ์ด๋ค.
- ๋งค๋ฒ ์ ๊ทผ์ ํ ๋๋ง๋ค ์๊ฐ์ด 2๋ฐฐ๋ก ๋์ด๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. (๋ํ: ํผ๋ณด๋์น ์์ด)
๊ณต๊ฐ ๋ณต์ก๋
- ์๊ณ ๋ฆฌ์ฆ์ด ์ํ๋๋ ๋ฐ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์ด๋์ ์๋ฏธํ๋ค.
- ํ๋ก๊ทธ๋จ์ด ํ์๋ก ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐ์ถํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
Greedy Algorithm (ํ์ ์๊ณ ๋ฆฌ์ฆ)
- ์ ํ์ ์๊ฐ๋ง๋ค ๋น์ฅ ๋์์ ๋ณด์ด๋ ์ต์ ์ ์ํฉ๋ง์ ์ฐพ์ ์ต์ข ์ ์ธ ํด๋ต์ ๋๋ฌํ๋ ๋ฐฉ๋ฒ์ด๋ค.
- ํน์ง
- ํ์์ ์ ํ ์์ฑ(Greedy Choice Property): ์์ ์ ํ์ด ์ดํ์ ์ ํ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
- ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ(Optimal Substructure): ๋ฌธ์ ์ ๋ํ ์ต์ข ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ถ๋ถ ๋ฌธ์ ์ ๋ํ ์ต์ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ๋ํ๋ฌธ์ : ๊ฑฐ์ค๋ฆ๋ ๋ฌธ์
Greedy Algorithm ๋ฌธ์ ํด๊ฒฐ ๋จ๊ณ
- ์ ํ ์ ์ฐจ(Selection Procedure): ํ์ฌ ์ํ์์์ ์ต์ ์ ํด๋ต์ ์ ํํ๋ค.
- ์ ์ ์ฑ ๊ฒ์ฌ(Feasibility Check): ์ ํ๋ ํด๊ฐ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ๊ฒ์ฌํ๋ค.
- ํด๋ต ๊ฒ์ฌ(Solution Check): ์๋์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋์ง ๊ฒ์ฌํ๊ณ , ํด๊ฒฐ๋์ง ์์๋ค๋ฉด ์ ํ ์ ์ฐจ๋ก ๋์๊ฐ ์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
Algorithm ๊ตฌํ์ ๊ธฐ์ด
- ์๊ณ ๋ฆฌ์ฆ์ ํผ๋ค? ๋ด๊ฐ ์๊ฐํ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ์ ์ปดํจํ ์ฌ๊ณ ๋ก ๋ณํํ์ฌ ์ฝ๋๋ก ๊ตฌํํ๋ค๋ ๊ฒ์ด๋ค.
- ์๊ณ ๋ฆฌ์ฆ์ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ ํํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฌธ๋ฒ์ ์ ํํ ์๊ณ ์์ด์ผ ํ๋ฉฐ, ๋ฌธ์ ์ ์กฐ๊ฑด์ ์ ๋ถ ๋ถํฉํ๋ ์ฝ๋๋ฅผ ์ค์ ์์ด ๋น ๋ฅด๊ฒ ์์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ก ๋์ด ์ฐ์ตํด์ผํ๋ค.
์์ ํ์
- ๋ชจ๋ ๋ฌธ์ ๋ ์์ ํ์์ผ๋ก ํ ์ ์๋ค.
- ๊ต์ฅํ ๋จ์ํ๊ณ ๋ฌด์ํ์ง๋ง ๋ต์ด ๋ฌด์กฐ๊ฑด ์๋ ๊ฐ๋ ฅํ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค.
- ์ฒซ ๋ฒ์งธ ๊ท์น์ ๋ง์กฑ์ํฌ ์ ์์ง๋ง ๋ ๋ฒ์งธ ๊ท์น์ ๋ง์กฑํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์์ ํ์์ ํ๋ ๋ฐฉ๋ฒ
- Brute Force(์กฐ๊ฑด/๋ฐ๋ณต์ ์ฌ์ฉํ์ฌ ํด๊ฒฐ), ์ฌ๊ท, ์์ด, DFS/BFS ๋ฑ
Brute Force (๋ฌด์ฐจ๋ณ ๋์ ๋ฐฉ๋ฒ)
- ์์ํ ์ปดํจํ ์ฑ๋ฅ์ ์์กดํ์ฌ ๋ชจ๋ ๊ฐ๋ฅ์ฑ์ ์๋ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.(์์ ํ์)
- ๊ณต๊ฐ, ์๊ฐ ๋ณต์ก๋์ ์์๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ์ต์ ์ ์๋๋ฆฌ์ค๋ฅผ ์ทจํ๋๋ผ๋ ์ ๋ต์ ์ฐพ์ผ๋ ค๋ ๋ฐฉ๋ฒ์ด๋ค.
Brute Force๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
- ํ๋ก์ธ์ค ์๋๋ฅผ ๋์ด๋๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ด ์์ ๋
- ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌ๋ฌ ์๋ฃจ์ ์ด ์๊ณ ๊ฐ ์๋ฃจ์ ์ ํ์ธํด์ผ ํ ๋
Brute Force์ ํ๊ณ
- ๋ฌธ์ ๊ฐ ๋ณต์กํด์ง์๋ก ๊ธฐํ๊ธ์์ ์ผ๋ก ๋ง์ ์์(์๊ฐ, ์ปดํจํ )์ ํ์๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ ์ ์๋ค.
Brute Force๋ฅผ ์ฌ์ฉํ๋ ๋ฌธ์
- ์์ฐจ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ (Sequential Search)
- ๋ฐฐ์ด์์ ํน์ ๊ฐ์ด ์กด์ฌํ๋์ง ๊ฒ์ํ ๋ ์ธ๋ฑ์ค 0๋ถํฐ ๋ง์ง๋ง ์ธ๋ฑ์ค๊น์ง ์ฐจ๋ก๋๋ก ๊ฒ์ํ๋ค.
- ๋ฌธ์์ด ๋งค์นญ ์๊ณ ๋ฆฌ์ฆ (Brute Force String Matching)
- ๊ธธ์ด๊ฐ n์ธ ์ ์ฒด ๋ฌธ์์ด๊ณผ ๊ธธ์ด๊ฐ m์ธ ๋ฌธ์์ด ํจํด์ ํฌํจํ๋์ง๋ฅผ ๊ฒ์ํ๋ค.
- ์ ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ (Selection Sort)
- ์ ์ฒด ๋ฐฐ์ด์ ๊ฒ์ํ์ฌ ํ์ฌ ์์์ ๋น๊ตํ๊ณ ์ปฌ๋ ์ ์ด ์์ ํ ์ ๋ ฌ๋ ๋๊น์ง ํ์ฌ ์์๋ณด๋ค ๋ ์๊ฑฐ๋ ํฐ ์์(์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์)๋ฅผ ๊ตํํ๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ (Bubble Sort)
- BFS, DFS
- DP
Dynamic Programming (DP, ๋์ ๊ณํ๋ฒ)
- ํ๋์ ๋ฌธ์ ๋ ๋จ ํ ๋ฒ๋ง ํ๋๋กํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ํ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํจ๊ป ์ธ๊ธ๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ, ํ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฐ์ด ์์ ๋ฌธ์ ์์ ์ถ๋ฐํ๋ค.
- ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์กฐํฉํด ์ต์ ์ ํด๋ฒ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๊ฐ์ (์์) ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํ๊ณ , ํ์ ๋ฌธ์ ๋ค์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ฒฐํฉํ์ฌ ์ต์ข ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
- ํ์ ๋ฌธ์ ๋ฅผ ๊ณ์ฐํ ๋ค ๊ทธ ํด๊ฒฐ์ฑ ์ ์ ์ฅํ๊ณ , ๋์ค์ ๋์ผํ ํ์ ๋ฌธ์ ๋ฅผ ๋ง๋ ๊ฒฝ์ฐ ์ ์ฅ๋ ํด๊ฒฐ์ฑ ์ ์ ์ฉํด ๊ณ์ฐ ํ์๋ฅผ ์ค์ธ๋ค.
Dynamic Programming์ ์ฌ์ฉํ ์ ์๋ ์กฐ๊ฑด
- Overlapping Sub-problems: ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ฌธ์ ๋ก ๋๋ ์ ์๊ณ , ์ด ์์ ๋ฌธ์ ๊ฐ ์ค๋ณตํด์ ๋ฐ๊ฒฌ๋๋ค.
- Optimal Substructure: ์์ ๋ฌธ์ ์์ ๊ตฌํ ์ ๋ต์ ๊ทธ๊ฒ์ ํฌํจํ๋ ํฐ ๋ฌธ์ ์์๋ ๊ฐ๋ค. ์ฆ, ์์ ๋ฌธ์ ์์ ๊ตฌํ ์ ๋ต์ ํฐ ๋ฌธ์ ์์๋ ์ฌ์ฉํ ์์๋ค.
๐ ์ถ๊ฐ๋ก ๊ณต๋ถํ ๋ด์ฉ
[udemy] React ์๋ฒฝ ๊ฐ์ด๋ ๊ฐ์ ๋ณด๊ธฐ (๋งค์ผ ์กฐ๊ธ์ฉ ์ด๋ผ๋ ๊พธ์คํ ๋ฃ๊ธฐ) (์์ฃผ)
Study์๊ณผ ํจ๊ป ์งํ์ค์ธ ํ๋ก์ ํธ ๊ตฌํ
pre-Project ์ฌ์ดํธ ์ฐพ๊ธฐ
๐ ์ค์ํ ๋ด์ฉ
- ์๊ณ ๋ฆฌ์ฆ์ด๋?
- ์๊ฐ ๋ณต์ก๋
- Big-O ํ๊ธฐ๋ฒ
- ๊ณต๊ฐ ๋ณต์ก๋
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
22.08.12_TIL (0) | 2022.08.12 |
---|---|
22.08.11_TIL (0) | 2022.08.10 |
22.08.09_TIL (0) | 2022.08.09 |
22.08.08_TIL (0) | 2022.08.08 |
22.08.05_TIL (0) | 2022.08.05 |