๐ Computer Science20 [๋์์ธ ํจํด] ํฉํ ๋ฆฌ ํจํด (Factory Pattern) ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด (Factory Method Pattern) ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๋๋ฐ, ์ด๋ค ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ง๋ ์๋ธ ํด๋์ค์์ ๊ฒฐ์ ํ๊ฒ ๋ง๋๋ ํจํด ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ์ผ์ ์๋ธํด๋์ค์๊ฒ ๋งก๊ธฐ๋ ๊ฒ ๋ถ๋ชจ ์ถ์ ํด๋์ค๋ ์ธํฐํ์ด์ค์๋ง ์์กดํ๊ณ ์ค์ ๋ก ์ด๋ค ๊ตฌํ ํด๋์ค๋ฅผ ํธ์ถํ ์ง๋ ์๋ธ ํด๋์ค์์ ๊ตฌํ ์๋ก์ด ๊ตฌํ ํด๋์ค๊ฐ ์ถ๊ฐ๋์ด๋ ๊ธฐ์กด Factory ์ฝ๋์ ์์ ์์ด ์๋ก์ด Factory๋ฅผ ์ถ๊ฐ ๊ฐ๋ฅ ๊ฐ์ฒด์ ์์ฑ์ ๋ด๋นํ๋ ํด๋์ค๋ฅผ ํ ๊ณณ์์ ๊ด๋ฆฌํ์ฌ ๊ฒฐํฉ๋๋ฅผ ์ค์ด๊ธฐ ์ํ์ฌ ํฉํ ๋ฆฌ ํจํด์ด ๋ฑ์ฅ ๊ฒฐํฉ๋: ํ ํด๋์ค์ ๋ณ๊ฒฝ์ ์ด ์ผ๋ง๋ ๋ค๋ฅธ ํด๋์ค์ ์ํฅ์ ์ฃผ๋๊ฐ๋ฅผ ์๋ฏธ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด์ ์ฅ์ ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ ์ ์์ ๋จ์ผ ์ฑ ์ ์์น์ ๋ฐ๋ฆ ํ๋ก๊ทธ๋จ์ ์ฝ๋.. 2023. 3. 17. [๋์์ธ ํจํด] ์ฑ๊ธํค ํจํด (Singleton Pattern) ์ฑ๊ธํค ํจํด (Singleton Pattern) ํ๋์ ํด๋์ค์ ์ค์ง ํ๋์ ์ธ์คํด์ค ๋ง ๊ฐ์ง๋ ํจํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๋ชจ๋์ ๋ง์ด ์ฌ์ฉ ํ๋์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ๋๊ณ ํด๋น ์ธ์คํด์ค๋ฅผ ๋ค๋ฅธ ๋ชจ๋๋ค์ด ๊ณต์ ํ๋ฉฐ ์ฌ์ฉ ์ธ์คํด์ค ์์ฑ ๋น์ฉ์ด ์ค์ด๋ฆ ๋์์ฑ(Concurrency) ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํด์ผ ํจ ์ฑ๊ธํค ํจํด์ ์ฌ์ฉํ๋ ์ด์ ์ต์ด ํ ๋ฒ๋ง ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๊ณ ์ ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ๋ฐฉ์ง ์ด๋ฏธ ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ํ์ฉํด ์๋๊ฐ ๋น ๋ฆ ์ฑ๊ธํต ์ธ์คํด์ค๊ฐ ์ ์ญ์ผ๋ก ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์, ๋ค๋ฅธ ํด๋์ค ๊ฐ์ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ์ฌ์ ์ธ์คํด์ค๊ฐ ์ ๋์ ์ผ๋ก ํ ๊ฐ๋ง ์กด์ฌํ๋ ๊ฒ์ ๋ณด์ฆํ๊ณ ์ถ์ ๊ฒฝ์ฐ์ ์ฌ์ฉ ์ฑ๊ธํค ํจํด์ ๋จ์ ์ฑ๊ธํค ์ธ์คํด์ค๊ฐ ํผ์ ๋๋ฌด ๋ง์ ์ผ์ ํ๊ฑฐ๋, ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ์ํฌ ๊ฒฝ์ฐ์ ๋ค๋ฅธ .. 2023. 3. 16. [์๋ฃ๊ตฌ์กฐ] ํด์ ํ ์ด๋ธ(Hash Table) ํด์ ํ ์ด๋ธ(Hash Table) ํด์ ํ ์ด๋ธ์ (Key, Value)์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ ํด์ํจ์(Hash Function)๋ฅผ ์ฌ์ฉํ์ฌ ๋ณํํ ๊ฐ์ index๋ก ์ผ์ ํด์ ํจ์(Hash Function)๋ฅผ ์ฌ์ฉํด Key ๊ฐ์ ์์ธ(index)์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ํด์ฑ(Hashing)์ด๋ผ๊ณ ํจ ๋ํ์ ์ธ ์๋ก ํ์ด์ฌ์ dictionary, ๋ฃจ๋น์ Hash, ์๋ฐ์ Map ๋ฑ์ด ์์ ํด์ ํ ์ด๋ธ์ ํน์ง ๊ธฐ๋ณธ ์ฐ์ฐ์ผ๋ก๋ search, insert, delete๊ฐ ์์ ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์์ key๋ฅผ ํตํด์ value๋ฅผ ์ป์ ์ ์์ => ์ด์งํ์ํธ๋ฆฌ๋ ๋ฐฐ์ด์ ๋นํด ์๋๊ฐ ๋น ๋ฆ ์ปค๋ค๋ ๋ฐ์ดํฐ๋ฅผ ํด์ํด์ ์งง์ ๊ธธ์ด๋ก ์ถ์ฝํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ ๋ ํจ์จ์ value๋ ์ค๋ณต ๊ฐ๋ฅํ.. 2023. 3. 15. [์๋ฃ๊ตฌ์กฐ] ์ฐ์ ์์ ํ(Priority Queue) ์ฐ์ ์์ ํ(Priority) ์์์ ์๊ด์์ด ์ฐ์ ์์๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ํํ์ ์๋ฃ๊ตฌ์กฐ ์ฐ์ ์์ ๋๊ธฐ์ด์ด๋ผ๊ณ ๋ ํจ ๋๊ธฐ์ด์์ ์ฐ์ ์์๊ฐ ๋์ ์์๊ฐ ์ฐ์ ์์๊ฐ ๋ฎ์ ์์๋ณด๋ค ๋จผ์ ์ ๊ณต๋๋ ์๋ฃ๊ตฌ์กฐ ์ผ๋ฐ์ ์ผ๋ก ํ(Heap)์ ์ฌ์ฉํ์ฌ ๊ตฌํ ๋ชจ๋ ํญ๋ชฉ์๋ ์ฐ์ ์์๊ฐ ์์ ์ฐ์ ์์๊ฐ ๋์ ์์๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ์์๋ณด๋ค ๋จผ์ ํ์์ ์ ์ธ ๋ ์์์ ์ฐ์ ์์๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ํ์ ์์์ ๋ฐ๋ผ ์ ๊ณต ์ฐ์ ์์ ํ ๊ตฌํ ๋ฐฉ๋ฒ ๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ, ํ์ ์ด์ฉํ์ฌ ๊ตฌํ ๊ฐ๋ฅ ๊ตฌํ ๋ฐฉ๋ฒ ์ฝ์ (enqueue) ์ญ์ (denqueue) ๋ฐฐ์ด (unsorted array) O(1) O(N) ์ฐ๊ฒฐ ๋ฆฌ์คํธ (unsorted linked list) O(1) O(N) ์ ๋ ฌ๋ ๋ฐฐ์ด (sorted array) O(N) O(1) .. 2023. 3. 13. [์๋ฃ๊ตฌ์กฐ] ํ(Heap) ํ(Heap) ์์ ์ด์งํธ๋ฆฌ ๊ธฐ๋ฐ์ ์๋ฃ๊ตฌ์กฐ ์ฌ๋ฌ ๊ฐ์ ๊ฐ๋ค ์ค์์ ์ต๋๊ฐ์ด๋ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๋๋ก ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ ์ฐ์ ์์ ํ๋ฅผ ์ํด ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ ๋ฐ์ ๋ ฌ์ํ(๋์จํ ์ ๋ ฌ์ํ) ์ ์ง ํฐ ๊ฐ์ด ์์์ ์๊ณ ์์ ๊ฐ์ด ํ์์ ์๋ ์ ๋ ์ค๋ณต๋ ๊ฐ ํ์ฉ ํ์ ์ข ๋ฅ ์ต๋ ํ(max heap) ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์ ์ด์งํธ๋ฆฌ ์ต์ ํ(min heap) ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ด์งํธ๋ฆฌ ํ์ ํ์ฉ ์๋ฎฌ๋ ์ด์ ์์คํ ๋คํธ์ํฌ ํธ๋ํฝ ์ ์ด ์ด์ ์ฒด์ ์์์ ์์ ์ค์ผ์ฅด๋ง ์์น ํด์์ ์ธ ๊ณ์ฐ ํ์ ๊ตฌํ ํ์ ์ ์ฅํ๋ ํ์ค์ ์ธ ์๋ฃ๊ตฌ์กฐ๋ ๋ฐฐ์ด ๊ตฌํ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ธ 0์ ์ฌ์ฉ๋์ง ์์ ํน์ ์์น์ ๋ ธ๋ ๋ฒํธ๋ ์๋ก์ด.. 2023. 3. 13. [์๋ฃ๊ตฌ์กฐ] ํธ๋ฆฌ(Tree) ํธ๋ฆฌ(Tree) ๋ ธ๋๋ค์ด ๋๋ฌด ๊ฐ์ง์ฒ๋ผ ์ฐ๊ฒฐ๋ ๋น์ ํ ๊ณ์ธต์ ์๋ฃ๊ตฌ์กฐ ๊ณ์ธต์ ์ธ ์๋ฃ๋ฅผ ํํํ๋๋ฐ ์ด์ฉ ๋ ธ๋(node)๋ค๊ณผ ๋ ธ๋๋ค์ ์ฐ๊ฒฐํ๋ ๊ฐ์ (edge)๋ค๋ก ๊ตฌ์ฑ ํ๋์ ๋ฃจํธ๋ ธ๋๋ฅผ ๊ฐ์ง ํธ๋ฆฌ์ ๊ด๋ จ๋ ์ฉ์ด ๋ ธ๋(node) ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ ๊ธฐ๋ณธ์์ ๋ ธ๋์๋ ํค ๋๋ ๊ฐ๊ณผ ํ์ ๋ ธ๋์ ๋ํ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ ๊ฐ์ (edge) ๋ ธ๋์ ๋ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ์ (link, branch๋ผ๊ณ ๋ ๋ถ๋ฆ) ๋ฃจํธ ๋ ธ๋(root node) ๋ถ๋ชจ๊ฐ ์๋ ์ต์์ ๋ ธ๋, ํธ๋ฆฌ๋ ํ๋์ ๋ฃจํธ ๋ ธ๋๋ง์ ๊ฐ์ง (A) ๋ถ๋ชจ ๋ ธ๋(parent node) ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง ๋ ธ๋ (H, I์ ๋ถ๋ชจ ๋ ธ๋๋ D) ์์ ๋ ธ๋(child node) ๋ถ๋ชจ ๋ ธ๋์ ํ์ ๋ ธ๋ (๋ ธ๋ D์ ์์ ๋ ธ๋๋ H, I) ํ์ ๋ ธ๋(sibling node) ๊ฐ์.. 2023. 3. 9. ์ด์ 1 2 3 4 ๋ค์ ๋ฐ์ํ