๋ชฉ๋ก๐ฉ๐ป ์ปดํจํฐ ๊ตฌ์กฐ/Computer Science (11)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bNHFqP/btslOC6gxKo/9wFodXyxPM2HSlqWz0KhfK/img.webp)
๐ซง ์ฐ๊ฒฐ ๋ฆฌ์คํธ : ์ฐจ๋ก๋ก ์ฐ๊ฒฐ๋ ๋ ธ๋๋ฅผ ํํํด์ฃผ๋ ์๋ฃ๊ตฌ์กฐ : ๋จ) ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ํน์ ์ธ๋ฑ์ค๋ฅผ ์์ ์๊ฐ์ ์ ๊ทผํ ์ ์๋ค (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) ๋ฐฐ์ด์ ๊ฐ ์ธ๋ฑ์ค์๋ ํค์ ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง ์ฐ๊ฒฐ๋ฆฌ์คํธ ์กด์ฌ ํค์ ๊ฐ์ ํด๋น ์ธ๋ฑ์ค์ ์ ์ฅ (๋ฐ๋์ ์ฐ๊ฒฐ๋ฆฌ์คํธ ์ด์ฉ!) ๐ฅ ์ถฉ๋ : ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ ํค๊ฐ ๊ฐ์ ์ฝ๋๋ฅผ ๊ฐ๋ฆฌํค๊ฑฐ๋, ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ ํด์ ์ฝ๋๊ฐ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒฝ์ฐ ⇒ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UrOgS/btslKIDG4Gw/9HGmYDPLjRB3QRx3MlbQX1/img.png)
๐ซง ๋น์ ํ๊ธฐ ํ์ผ ํฌ๊ธฐ๊ฐ ์๋ค๋ฉด ? ์จ๋ผ์ธ์ผ๋ก ์ ์ก ํ์ผ ํฌ๊ธฐ๊ฐ ๋ฌด์ง๋งํ๊ฒ ํฌ๋ค๋ฉด ? ์ด์ 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์ Ω ๋ ๋ค ์๋ฏธ (๋ฑ ๋ง๋..