๋ชฉ๋ก๐ฉ๐ป ์ปดํจํฐ ๊ตฌ์กฐ (110)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
๐ซง ์คํ : ๋ฐ์ดํฐ๋ฅผ ์์ ์ฌ๋ฆฐ๋ค : LIFO (Last In First Out) ์ ๋ฐ๋ผ ์๋ฃ๋ฅผ ๋ฐฐ์ดํ๋ค : ๊ฐ์ฅ ์ต๊ทผ์ ์คํ์ ์ถ๊ฐํ ํญ๋ชฉ์ด ๊ฐ์ฅ ๋จผ์ ์ ๊ฑฐ๋ ํญ๋ชฉ : ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ์คํ์ ์์ ์๊ฐ์ i ๋ฒ์งธ ํญ๋ชฉ์ ์ ๊ทผํ ์ ์์ : ์คํ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ์ฐ์ฐ์ ์์ ์๊ฐ์ ๊ฐ๋ฅํ๋ค ๐ซง ์คํ์ด ์ ์ฉํ ๊ฒฝ์ฐ : ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๋ ์ ์ฉํจ : ์ฌ๊ท์ ์ผ๋ก ํจ์๋ฅผ ํธ์ถํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์คํ์ ๋ฃ์ด ์ฃผ๊ณ , ์ฌ๊ท ํจ์๋ฅผ ๋น ์ ธ ๋์ ํด๊ฐ ๊ฒ์(backtrack) ํ ๋๋ ์คํ์ ๋ฃ์ด ์ฃผ์๋ ์์ ๋ฐ์ดํฐ๋ฅผ ๋นผ ์ค์ผ ํ๋ค : ์ผ๋ จ์ ํ์๋ฅผ ์ง๊ด์ ์ผ๋ก ๊ฐ๋ฅํ๊ฒ ํด ์ค๋ค : ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ณต์ ํํ (iterative) ๋ฅผ ํตํด์ ๊ตฌํํ ์ ์๊ฒ ํจ ๐ซง ์คํ ๊ตฌํํ๊ธฐ funct..
๐ซง ์ฐ๊ฒฐ ๋ฆฌ์คํธ : ์ฐจ๋ก๋ก ์ฐ๊ฒฐ๋ ๋ ธ๋๋ฅผ ํํํด์ฃผ๋ ์๋ฃ๊ตฌ์กฐ : ๋จ) ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ํน์ ์ธ๋ฑ์ค๋ฅผ ์์ ์๊ฐ์ ์ ๊ทผํ ์ ์๋ค (k๋ฒ์งธ ์์๋ฅผ ์ฐพ๊ณ ์ถ๋ค๋ฉด ์ฒ์๋ถํฐ k๋ฒ ๋ฃจํ ๋์์ผํจ) : ์ฅ) ๋ฆฌ์คํธ์ ์์ ์ง์ ์์ ์์ดํ ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ์ฐ์ฐ์ ์์ ์๊ฐ์ ํ ์ ์๋ค ๋จ๋ฐฉํฅ ๊ฐ ๋ ธ๋๋ ๋ค์ ๋ ธ๋ ๊ฐ๋ฆฌํด ์๋ฐฉํฅ ๊ฐ ๋ ธ๋๋ ๋ค์ ๋ ธ๋์ ์ด์ ๋ ธ๋๋ฅผ ํจ๊ป ๊ฐ๋ฆฌํด ๐ (๋จ๋ฐฉํฅ) ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ class Node { Node next = null; int data; public Node(int d) { data = d; } void appendToTail(int d) { Node end = new Node(d); Node n = this; while (n.next != null) { n = n.next;..
๐ซง ๋ฐฐ์ด๊ณผ ๋ฌธ์์ด โค๏ธ ํด์ํ ์ด๋ธ (hash table) : ํจ์จ์ ์ธ ํ์์ ์ํ ์๋ฃ๊ตฌ์กฐ๋ก์, key๋ฅผ value ์ ๋์์ํด : ์ต์ ์ ๊ฒฝ์ฐ O(n) // n์ ํค์ ๊ฐ์ : ์ต์ ์ ๊ฒฝ์ฐ O(1) 1) ํค์ ํด์ ์ฝ๋ ๊ณ์ฐ ํค์ ์๋ฃํ์ ๋ณดํต int or long ํค์ ๊ฐ์ ๋ฌดํ (int ๋ ์ ํ) 2) hash(key) % array_length ๋ฐฉ์์ผ๋ก ํด์ ์ฝ๋ ์ด์ฉํด ๋ฐฐ์ด์ ์ธ๋ฑ์ค ๊ตฌํจ ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ ํด์ ์ฝ๋๊ฐ ๊ฐ์ ์ธ๋ฑ์ค ๊ฐ๋ฆฌํฌ ์ ์์ 3) ๋ฐฐ์ด์ ๊ฐ ์ธ๋ฑ์ค์๋ ํค์ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง ์ฐ๊ฒฐ๋ฆฌ์คํธ ์กด์ฌ ํค์ ๊ฐ์ ํด๋น ์ธ๋ฑ์ค์ ์ ์ฅ (๋ฐ๋์ ์ฐ๊ฒฐ๋ฆฌ์คํธ ์ด์ฉ!) ๐ฅ ์ถฉ๋ : ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ ํค๊ฐ ๊ฐ์ ์ฝ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฑฐ๋, ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ ํด์ ์ฝ๋๊ฐ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ ⇒ ..
๐ซง ๋น์ ํ๊ธฐ ํ์ผ ํฌ๊ธฐ๊ฐ ์๋ค๋ฉด ? ์จ๋ผ์ธ์ผ๋ก ์ ์ก ํ์ผ ํฌ๊ธฐ๊ฐ ๋ฌด์ง๋งํ๊ฒ ํฌ๋ค๋ฉด ? ์ด์ or ๋นํ๊ธฐ๐ ๐ซง ์๊ฐ ๋ณต์ก๋ ์ ๊ทผ์ ์คํ ์๊ฐ (asymptotic runtime), big-O ์๊ฐ ๊ฐ๋ ์จ๋ผ์ธ ์ ์ก : O(s), s๋ ํ์ผ์ ํฌ๊ธฐ ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ ์ก ์๊ฐ์ด ์ ํ์ ์ผ๋ก ์ฆ๊ฐ ๋นํ๊ธฐ ์ ์ก : ํ์ผ์ ํฌ๊ธฐ ์๊ด์์ด O(1) ์์์๊ฐ๋งํผ ์์ โค๏ธ big-O : ์๊ฐ์ ์ํ : ๋ฐฐ์ด์ ๋ชจ๋ ๊ฐ์ ์ถ๋ ฅํ๋ ์๊ณ ๋ฆฌ์ฆ : O(n) ๋ฟ๋ง ์๋๋ผ, O(n^3) ํน์ O(n) ๋ณด๋ค ํฐ ์ด๋ค ์ํ ์๊ฐ์ผ๋ก ๊ฐ๋ฅ โค๏ธ big-Ω (omega) : ๋ฑ๊ฐ or ํํ : Ω(n) ๋ฟ๋ง ์๋๋ผ, Ω(log N) ํน์ Ω(1) ๋ก ํํ ๊ฐ๋ฅ โค๏ธ big-θ (theta) : O์ Ω ๋ ๋ค ์๋ฏธ (๋ฑ ๋ง๋..
=> ํ(heap) ์๋ฃ๊ตฌ์กฐ ๊ฐ๋ ์ดํดํ๊ธฐ | ๊ฐ๋ฐ์ ์ฝ๋ฉํ ์คํธ & ๋ฉด์ ์ง์ ๐ซง ํ(heap) ์๋ฃ๊ตฌ์กฐ : ์ต๋๊ฐ ๋ฐ ์ต์๊ฐ์ ์ฐพ์๋ด๋ ์ฐ์ฐ์ ๋น ๋ฅด๊ฒ ํ๊ธฐ ์ํด ๊ณ ์๋ ์์ ์ด์งํธ๋ฆฌ (complete binary tree) ๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ ์๋ฃ๊ตฌ์กฐ : A๊ฐ B์ ๋ถ๋ชจ ๋ ธ๋์ด๋ฉด, A์ ํค ๊ฐ๊ณผ B์ ํค ๊ฐ ์ฌ์ด์๋ ๋์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝ๋๋ค - ์ต๋ ํ : ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํญ์ ํฐ ํ ๊ฐ์ง left : i * 2 + 1 right : i * 2 + 2 parent : (i - 1) / 2 - ์ต์ ํ : ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํญ์ ์์ ํ ๊ฐ์ง ๐ซง ํ(heap) ์ฃผ์ ๋ฉ์๋ peek() : ์ต๋/์ต์๊ฐ ๋ฆฌํด size() : ํ ์ฌ์ด์ฆ ๋ฆฌํด isEmpty() ..
=> ์ฝ๋ฉํ ์คํธ & ๊ธฐ์ ๋ฉด์ ์ ์ํ ํธ๋ฆฌ(tree) ์๋ฃ๊ตฌ์กฐ ๐ซง ํธ๋ฆฌ(tree) ์๋ฃ๊ตฌ์กฐ : ๋ ธ๋์ ์ ๋ค ๊ด๊ณ๊ฐ 1:N or N:M : ๋น์ ํ ๊ณ์ธต์ ๊ตฌ์กฐ : ํ๋์ tree ์๋ ํ๋์ root ๊ฐ ์์ : ๊ฐ node ๋ ํ๋์ ๊ฐ์ฒด๋ก ํํ๋จ : node ์ ๋ฐ์ดํฐ์ ์์ ๋ ธ๋ ์ ์ฅ ๊ฐ์ง : size ๋ root ํฌํจ ๋ชจ๋ node ์ ์ : depth ๋ node ์์ root ๊น์ง์ ๊ฑฐ๋ฆฌ : height๋ ๋ ธ๋ ๊น์ด์ ์ต๋๊ฐ ๐พbinary tree (์ด์ง ํธ๋ฆฌ) : ๊ฐ ๋ ธ๋๊ฐ ์ต๋ ๋๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ tree : ๊ฐ ๋ ธ๋๊ฐ 0์์ ์ต๋ 2๊ฐ์ child ๋ ธ๋ ๊ฐ๋๋ค ๐พ binary search tree (์ด์งํ์ํธ๋ฆฌ) : ์ผ์ชฝ ์์ ๋ ธ๋ ๊ฐ < ๋ถ๋ชจ ๋ ธ๋ ๊ฐ : ๋ถ๋ชจ ๋ ธ๋ ๊ฐ < ..
=> ์ด ๋ฐฉ๋ฒ์ผ๋ก ํ์ด๋ณด์ธ์ (์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์๊ณ ๋ฆฌ์ฆ) ๐ซง ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์๊ณ ๋ฆฌ์ฆ : ๋ถ๋ถ ๋ฐฐ์ด์ ์์๋ค์ ์ด๋ ํ ์กฐ๊ฑด ํ์ ๊ณ์ฐํ ๋ ์ฌ์ฉ : ํ๋์ ํน์ ๋ฒ์๋ฅผ ์ ํด ๋๊ณ , ๊ทธ ์๋์ฐ๋ฅผ ์ด๋์ํค๋ฉด์ ๋ฒ์ ๋ด์ ์๋ ์์๋ค์ ๊ณ์ฐํด์ค : ์๋์ฐ ๋ฒ์ ๋ด์ ๋ชจ๋ ์ซ์๋ค์ ํฉ์ฐํ๊ณ , ๋ฒ์ ๋ฐ์ผ๋ก ๋ฒ์ด๋ ์ซ์๋ค์ ๋นผ์ค๋ค ๐พ ์ฌ์ด์ฆ๊ฐ k์ธ, ๋ถ๋ถ ๋ฐฐ์ด(subarrary) ์ ์ต๋ ํฉ ๊ตฌํ๊ธฐ function maxSumOfSubArrary(arr: number[], k:numnber) { let windowSum = 0; let maxSum = -Infinity; for (let i = 0; i = k - 1) { ma..
=> ๊ฐ๋ฐ์ ํ์ ์๊ณ ๋ฆฌ์ฆ #3. ์ด์งํ์ ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ๐ซง ์ด์งํ์ : ๋ถํ ์ ๋ณต ํจํด์ ์งํฅํ๋ ํ์ ์๊ณ ๋ฆฌ์ฆ : ์ธํ ๋ฐฐ์ด/๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด ์๋ ์กฐ๊ฑดํ์ ์ ์ฉ๋จ ๐ซง ์ด์งํ์ vs ์ ํํ์ ์ด์งํ์ ์ ํํ์ worst : O(log n) ๋งคํ ์๋ฃ๋ฅผ ๋ฐ์ผ๋ก ๋๋ ๊ฐ๋ฉฐ ํ์ (์ ํ๋ณด๋ค ๋น ๋ฆ) worst : O(n) ์์ฐจ์ ์ธ ํ์ ํจํด ์ธํ ๋ฐ์ดํฐ ์ ๋ ฌ ๋ถํ ์ ๋ณต ์ ํ ์๊ฑฐ๋ ์ค๊ฐ ์ฌ์ด์ฆ์ ๋ฐ์ดํฐ์ ์ ์ ์ ๐ซง ์ด์งํ์ ์๋ฆฌ 1) L, M, (์ค๊ฐ ์ง์ ), R ํฌ์ธํธ ์ค๋น 2) ๋ฐฐ์ด์ M ์๊ฐ ์ฐพ๋ ์ซ์์ ๊ฐ๋ค๋ฉด M ๋ฆฌํด ์ถ์ธก ์ซ์๊ฐ ์ฐพ๋ ์ซ์๋ณด๋ค ์๋ค๋ฉด L์ M + 1 ์์น๋ก ์ด๋ (์ข์ธก ์ซ์๋ค ํ์์์ ์ ์ธ) ์ถ์ธก ์ซ์๊ฐ ์ฐพ๋ ์ซ์๋ณด๋ค ํฌ๋ค๋ฉด R์ M - 1 ์์น๋ก ์ด๋ (์ฐ์ธก ์ซ์๋ค ํ์์์ ์ ์ธ) ..