๋ชฉ๋ก๐ฉ๐ป ์ปดํจํฐ ๊ตฌ์กฐ/Algorithm (16)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?

=> ๋น ์ค(Big-O)ํ๊ธฐ๋ฒ ์ฝ๊ฒ ์ดํดํ๊ธฐ [10๋ถ ์ ๋ฆฌ] ๐ซง ์ฐ๊ฒฐ๋ฆฌ์คํธ (Linked List) : ์ฐ์๋ ๋ ธ๋(Node) ์ ์ฐ๊ฒฐ์ฒด ๐พ ๋ ธ๋(Node) : ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ์ฌ์ฉ๋๋ ํ๋์ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ : ๋ฐ์ดํฐ & ๋งํฌ, 2๊ฐ์ง์ ํ๋๋ฅผ ๋ด๊ณ ์๋ ๊ตฌ์กฐ ๐พ data : ๋ ธ๋๊ฐ ๋ด๊ณ ์๋ ๋ฐ์ดํฐ/๊ฐ ๐พ next : ๋งํฌ/ํฌ์ธํฐ ์ญํ , ๋ค์ ๋ ธ๋์ ์ฃผ์๋ฅผ ์ ์ฅ (์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ, prev ํฌ์ธํฐ (์ด์ ๋ ธ๋์ ์ฃผ์) ์ถ๊ฐ) ๐ซง ์ฐ๊ฒฐ๋ฆฌ์คํธ (Linked List) vs ๋ฐฐ์ด ์ฐ๊ฒฐ๋ฆฌ์คํธ (Linked List) ๋ฐฐ์ด random access ๋ถ๊ฐ๋ฅ random access ๊ฐ๋ฅ ๋ฆฌ์คํธ์ n๋ฒ์งธ ๋ ธ๋ ๋ฐฉ๋ฌธ์ O(n) ์๊ฐ ์์ ๋ฐฐ์ด์ n๋ฒ์งธ ์์ ๋ฐฉ๋ฌธ์ O(1) ์๊ฐ์ผ๋ก ๊ฐ๋ฅ ๋ฐฐ์ด๋ณด๋ค ๋นจ๋ผ์ง ์ ์๋ ๋ ธ..

=> ๋น ์ค(Big-O)ํ๊ธฐ๋ฒ ์ฝ๊ฒ ์ดํดํ๊ธฐ [10๋ถ ์ ๋ฆฌ] ๐ซง ๋น ์ค(Big-O)ํ๊ธฐ๋ฒ : ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ : ์๊ฐ / ๊ณต๊ฐ ๋ณต์ก๋ ์์ธก์ ์ฌ์ฉ : N ๊ฐ์ ์ฆ๊ฐ์ ๋ค๋ฅธ ์ฒ๋ฆฌ ์๊ฐ ๋๋ ๊ณต๊ฐ ๊ณ์ฐ : ์์์ ๊ณ์ ์ ๊ฑฐํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋๋ฅผ ๋จ์ํ : ์ธํ์ ์ฆ๊ฐ์ ๋ฐ๋ฅธ ์ฐ์ฐ ์ฒ๋ฆฌ์๊ฐ์ ์ฆ๊ฐ์จ ๐ซง ์ฃผ์ ์๊ฐ๋ณต์ก๋ O(1) - Constant Time : ์ธํ์ ํฌ๊ธฐ์ ์๊ด์์ด ํญ์ ์ผ์ ํ ์๊ฐ ์์ O(log n) - Logarithmic : ๋ก๊ทธ์๊ฐ, O(1) ๋ค์์ผ๋ก ๋น ๋ฅธ ์๊ฐ ๋ณต์ก๋ O(n) - Linear Time : ์ ํ ์๊ฐ, ์ธํ์ ์ฆ๊ฐ ์ ๊ฐ์ ๋น์จ๋ก ์ฆ๊ฐ O(N^2) - Quadratic : 2์ฐจ ์๊ฐ, ์ธํ์ ์ฆ๊ฐ ์ n์ ์ ๊ณฑ ๋น์จ๋ก ์ฆ๊ฐ O(n!) - Factoria..

220930 ์์ฑ 1๏ธโฃ์ ํ๊ฒ์ : ๋ฐ์ดํฐ๋ฅผ ๋ฆฌ์คํธ์ ์ ์ฅํ๊ณ ํด๋น ๋ฆฌ์คํธ์ ๋งจ ์๋ถํฐ ๋๊น์ง ์์๋๋ก ์กฐ์ฌํ์ฌ ์ํ๋ ๋ฐ์ดํฐ ์ฐพ๊ธฐ : ๊ฐ์ ์ฐพ์ ๋๊น์ง ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํด์ผ ํ๋ฏ๋ก, ๋ฐ์ดํฐ ์๊ฐ ์ฆ๊ฐํ๋ฉด ์ฒ๋ฆฌ์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค ๋ฐ์ดํฐ ์ n์ด๋ผ ํ๋ฉด ๋น๊ตํ์์ ํ๊ท ์ (n+1) / 2 O(n) # ์ ํ๊ฒ์ # ์ํ๋ ๊ฐ ์ฐพ๊ธฐ num_list = [23, 12, 55, 32, 45, 76, 88, 52] def linear (n) : for i in num_list : if i == n : return True return False print(linear(5)) # result # False 2๏ธโฃ ์ด์ง๊ฒ์ : ๋ฐ์ดํฐ ์๊ฐ ๋์ด๋๋ ๋น ๋ฅธ ์๋๋ก ๊ฒ์์ ์ฒ๋ฆฌํ๊ธฐ : ๊ฒ์ ๋ฒ์๋ฅผ ์์ด๋ ๋ค์ ์ ๋ฐ์ผ๋ก ๋๋ ..

220928 ์์ฑ 1๏ธโฃ ๋ณต์ก๋ : ๋ง ๊ทธ๋๋ก ๊ณ์ฐ์ ๋ณต์ก๋ ์๊ฐ ๋ณต์ก๋ : ์ฒ๋ฆฌ์ ์ผ๋ง๋ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋์ง ๊ณต๊ฐ ๋ณต์ก๋ : ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ๊ธฐ์ต ์ฉ๋์ ์ผ๋ง๋ ํ์๋ก ํ๋์ง 2๏ธโฃ ๋ณต์ก๋ ์์ฑ๋ฒ : ์ ์ฒด ๋ณต์ก๋์ ํฐ ์ํฅ์ ๊ธฐ์น์ง ์๋ ๋ถ๋ถ์ ๋ฌด์ํ๊ณ ๋ณต์ก๋๋ฅผ ์์ฑ ๋น ์ค ํ๊ธฐ๋ฒ O ์ ๋ ฅ ํฌ๊ธฐ n์ ๋ณํ์ ๋ฐ๋ผ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฌ๋ผ์ง ์ฒ๋ฆฌ ์๊ฐ ์๊ฐ ๋ณต์ก๋ ์ ์งง๋ค ↑ . . . . . ↓ ๊ธธ๋ค O(1) ๋ฆฌ์คํธ ์ ๊ทผ O(logn) ์ด์ง ๊ฒ์ O(n) ์ ํ ๊ฒ์ O(nlogn) ๋ณํฉ ์ ๋ ฌ O(n^2) ์ ํ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ O(n^3) ํ๋ ฌ ๋ฌธ์ O(2^n) ๋ฐฐ๋ญ ๋ฌธ์ O(n!) ์ธํ์ ๋ฌธ์ 3๏ธโฃ ์ต์ ์๊ฐ ๋ณต์ก๋ & ํ๊ท ์๊ฐ ๋ณต์ก๋ ๐ค ์ต์ ์๊ฐ ๋ณต์ก๋ : ๊ฐ์ฅ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋ฐ์ดํฐ์ ๋ณต์ก๋ ๐ค ..

220907 ์์ฑ https://engineer-mole.tistory.com/190 [python] python์ self์ __init__์ ์ดํด โป ์ผ๋ณธ์ ํ ํฌ์คํ ์ ๋ฒ์ญํ ๊ธ์ ๋๋ค. ์ค์ญ ๋ฐ ์ง์ญ์ด ์์ ์ ์์ผ๋ฉฐ, ๋ด์ฉ ์ค๋ฅ๋ ๋๊ธ๋ก ์ง์ ํด์ฃผ์ฌ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. Python์ ํด๋์ค์ ๋ํ ์ดํด ๋ค๋ฅธ ์ธ์ด์ ๋์ผํ๊ฒ python์์๋ ํด๋์ค engineer-mole.tistory.com ๐ ํด๋์ค (class) ๊ฐ์ฒด์ ๊ตฌ์กฐ์ ํ๋ ๊ฐ์ฒด(object)๋ฅผ ํํํ๊ธฐ ์ํ ๋ฌธ๋ฒ ์ด๋ค ์ฌ๋ฌผ์ด๋ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ถ์ํ๋ฅผ ๊ฑฐ์ณ ๋ง๋ ํ ์์ฑํ๊ณ ์ ํ๋ ๊ฐ์ฒด์ ์์ฑ ๋ฑ์ ๋ฉค๋ฒ ๋ณ์๋ก ํด๋น ๊ฐ์ฒด๊ฐ ๊ฐ์ง ๊ธฐ๋ฅ์ ๋ฉค๋ฒ ํจ์(๋ฉ์๋)๋ก ๊ตฌํ class ํด๋์ค๋ช : ๋ฉค๋ฒ๋ณ์ = ๊ฐ # ํด๋์ค ๋ณ์ ... d..

220617 ์์ฑ https://www.youtube.com/watch?v=mFY0J5W8Udk 1. hash function h(x) = x % size hash table 2. collision - open hasing chaining : ๋์ผํ ํด์ฌ ํจ์ ์ฌ์ฉํ์ฌ ํค ๋งคํํ ๋! : ์ ์ฒด์ธ์ ์ถ๊ฐ : ์ฒด์ธ ๋ด๋ถ์ ์ธ๋ฑ์ค ์์ฑ - closed hashing linear probing : ์ถฉ๋ํ๋ฉด ๊ทธ๋ค์ ์ฌ์ ๊ณต๊ฐ์ ๋ฃ๊ธฐ : ์๋ก์ด ํด์ ํจ์ ์ ์ h'(x) = [h(x) + h(i)] % size f(i) = i : ๋ณด์์ ์ธ ์์น์์ ์์ ์ฐพ๊ธฐ!! : ๋น ๊ณต๊ฐ์ ๋๋ฌํ ๋๊ฐ์ง ๊ฒ์ : ํด๋ฌ์คํฐ๋ง ๋ฌธ์ ์ผ๊ธฐ quadratic probing (2์ฐจ ํ์) : ํด๋ฌ์คํฐ๋ง ๋ฌธ์ ํด๊ฒฐ : ์๋ก์ด ํด์ ํจ์ ..
220617 ์์ฑ https://www.youtube.com/watch?v=Bzmepm6pYQI 1. hash table : ์ ๋ ฌ์ด ์๋๋ค : ๊ฒ์ ์๋ o(1) ๊ฑธ๋ฆฐ๋ค but ์ค๋ ๊ฑธ๋ฆฌ๋ฉด o(n) : key-value ๊ด๊ณ์ด๋ค : ๊ฒ์์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค : ํด์์ฝ๋๋ก ์ธ๋ฑ์ค ๋ฐฐ์ด -> linked list : ์ถฉ๋์ด ๋ ๋ค 2. hash table ํฐ ํน์ง - table ์ list! - hash function์ ๋ง๋ ๋ค - ์ถฉ๋ ํด๊ฒฐ ๋ฐฉ์์ ์ฐพ๋๋ค 3. hash function : division hesh func f(k) = k % m : perfect func key -> slot (1๋ 1) ๋น์ด์์ : c - universal hash func Pr{f(x) == f(y)} == 1/m ์ถฉ๋ํ๋ฅ ..