๐งช ์ปดํจํฐ๊ณผํ : CS
[๋์์ธํจํด] ๋์์ธ ํจํด (3) - ์ด๋ํฐ ํจํด (Adatper Pattern)
๐ 1. ์ด๋ํฐ ํจํด(Adapter Pattern)์ด๋? ํ๊ตญ์ ๊ฐ์ ์์ ์ฌ์ฉํ๋ ์ ์์ 220V์ ๋๋ค. ๋ฏธ๊ตญ์ ๊ฐ์ ์์ ์ฌ์ฉํ๋ ์ ์์, 110V๋ฅผ ์ฌ์ฉํ์ฃ . ํ๊ตญ์ฌ๋์ด ๋ฏธ๊ตญ์ผ๋ก ์ฌํ์ ๊ฐ์, ์์์ ๋จธ๋ฌธ๋ค๊ณ ํฉ์๋ค. ํ๊ตญ์ ํธ๋ํฐ ์ถฉ์ ๊ธฐ๋ฅผ ๋ค๊ณ , ๋ฏธ๊ตญ์์ ๊ผฝ์ผ๋ ค๊ณ ํ๋, ๋จ์๊ฐ ๋ง์ง ์์ต๋๋ค. ๋ฏธ๊ตญ์ ์ ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด, 110V์ ๋ง๋ ๋จ์๋ฅผ ๊ผฝ์์ผ ํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๋ณดํต ํ๊ตญ์ ์ถฉ์ ๊ธฐ๋ฅผ ๋ฒ๋ฆฌ๊ณ ๋ฏธ๊ตญ์ ์ถฉ์ ๊ธฐ๋ฅผ ์๋ก ์ฌ์ง ์๊ณ , ์ด๋ํฐ(Adapter, ๋ณํ๊ธฐ)๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ํฐ ํจํด์ ํธํ์ฑ์ด ์๋ ๊ธฐ์กด ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ๋ณํํด ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ํจํด์ ๋๋ค. ํธํ์ฑ์ด ์๋ ๊ธฐ์กด ํด๋์ค๋ ํ๊ตญ์ 220V ์ถฉ์ ๊ธฐ์ ๋์ผํ๊ณ , ์ธํฐํ์ด์ค๋ฅผ ๋ณํํด ์ฌ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ ์ด๋..
[๋์์ธํจํด] ๋์์ธ ํจํด(2) - ์ฑ๊ธํค ํจํด(Singleton Pattern)
๐ 1. ์ฑ๊ธํค ํจํด(Singleton Pattern)์ด๋? ์ฑ๊ธํค ํจํด์, ์ด๋ ํ ํด๋์ค(๊ฐ์ฒด)๊ฐ ์ ์ผํ๊ฒ ๋จ ํ ๊ฐ๋ง ์กด์ฌํด์ผ ํ ๋ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ฃผ๋ก ์๋ก ์์์ ๊ณต์ ํ ๋ ์ฌ์ฉํ๋ฉฐ, ์์ฑ๋ ๋จ ํ๋์ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๋ฉฐ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ์ฑ๊ธํค ํจํด์ ๋์์ธ ํจํด ์ค์, '์์ฑ' ํจํด์ ์ํฉ๋๋ค. ์ฑ๊ธํค ํจํด์ ํตํด ๋จ ํ ๋ฒ์ ์์ฑ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ๋ก๊ทธ๋๋ฐ์์์ ์์๋ก๋ TCP socket ํต์ ์์ ์๋ฒ์ ์ฐ๊ฒฐ๋ connect ๊ฐ์ฒด์ ์ฃผ๋ก ์ฌ์ฉํด์ ํ ์์ผ์์๋ง ์ฌ์ฉํ๋ ๊ฒ๋ค์ด ์์ต๋๋ค. TCP ์ฐ๊ฒฐ์ ํ ๋ ์๋ก ์ฐ๊ฒฐํ๋ ๋น์ฉ์ด ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ ํ ๋ฒ ์ด๋ ค์๋ ์์ผ์ ์ฌํ์ฉํ๋ ๊ฒ์ด ์ข์ง, ์์ฒญ๋ง๋ค ๊ณ์ connection์ ๋งบ์ ํ์๊ฐ ์์ต๋๋ค. ์คํ๋ง์์ 'Bean'์ด๋ผ๊ณ ..
[๋์์ธํจํด] ๋์์ธ ํจํด(1) - ๋์์ธ ํจํด์ ๋ฌด์์ธ๊ฐ?
๐ 1. ๋์์ธ ํจํด(Design Pattern)์ด๋? ๋์์ธ ํจํด์ ๋๋์ฒด ๋ฌด์์ธ๊ฐ? ๊ฐ๋ฐ์ ๋ํด ๊น์ ๊ด์ฌ์ ๊ฐ๋ค๋ณด๋ฉด, ๋๊ตฌ๋ ํ ๋ฒ์ฏค์ '๋์์ธ ํจํด'์ด๋ผ๋ ๋ง์ ๋ค์ด๋ดค์ ๊ฒ์ ๋๋ค. ๋๋์ฒด ๋์์ธ ํจํด์ด๋ ๋ฌด์์ด๊ณ , ์ด๋ฅผ ํ์ตํ๋ฉด ์ด๋ค ์ฅ์ ์ด ์์๊น์? ๋์์ธ ํจํด์ "์์ฃผ ์ฌ์ฉํ๋ ์ค๊ณ ํจํด์ ์ ํํ ํด์ ์ด๋ฅผ ์ ํ๋ณ๋ก ๊ฐ์ฅ ์ต์ ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ๋ฐ์ ํ ์ ์๋๋ก ์ ํด๋ ์ค๊ณ ์๊ณ ๋ฆฌ์ฆ"๊ณผ ๋น์ทํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ๋ช ํํ๊ฒ ๊ฐ์ฅ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋ต์ ์ฐพ๋ ์ ๋ต์ด ์๋ ํํ์ด์ง๋ง, ๋์์ธ ํจํด์ ๋ช ํํ ์ ๋ต์ด ์๋ ํํ๋ ์๋์ง๋ง, ํ๋ก์ ํธ์ ์ํฉ์ ๋ง์ถฐ ์ ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ํํธ์จ์ด๋ฅผ ์ค๊ณํ ๋๋ ๊ธฐ์กด์ ๊ฒฝํ์ด ๊ต์ฅํ ์ค์ํ์ง๋ง, ๋ด๋น๋ ์ด๋ฌํ ๊ฒฝํ์ด ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝํ์ ๊ณต์ ํ๊ณ ์ ๋์จ ๊ฒ์ด Go..
[์๋ฃ๊ตฌ์กฐ] Priority Queue (์ฐ์ ์์ ํ) ์ธํฐ๋ทฐ ๋๋น
๐ก 1. ์ฐ์ ์์ ํ(Priority Queue)๋? ์ฐ์ 'ํ'๋ ์ ์ ์ ์ถ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํ์ ๋ค์ด์จ ์์๋ฅผ ์ฐ์ ์์๋ก ๊ฐ๋ ํ์ธ ๊ฒ์ด๋ค. ์ฐ์ ์์ ํ๋ ์ผ๋ฐ์ ์ผ๋ก ๋จผ์ ๋ค์ด์จ ์์๋๋ก ๋น ์ ธ๋์ค๋ ๊ฒ์ด ์๋๋ผ, ํ ๋ด๋ถ์ ์์ ์ค ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ์์๋ถํฐ ๋น ์ ธ ๋์ค๋ ํ๋ฅผ ์๋ฏธํ๋ค. ๐ก 2. ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ธ ๊ฐ์ง์ด๋ค. ๊ฐ๊ฐ ๋ฐฐ์ด(Array), ์ฐ๊ฒฐ๋ฆฌ์คํธ(LinkedList), ํ(Heap)์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ ๊ทธ ์ค ์ผ๋ฐ์ ์ผ๋ก ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ Heap์ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค. ์ ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ ๋ Heap์ ์ฌ์ฉํ๋ ์ง๋ ๋ฐ๋ก ์๊ฐ๋ณต์ก๋์ ์๋ค. ๋ค์์ ๊ฐ๊ฐ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด๋ค..
[์๋ฃ๊ตฌ์กฐ] Stack๊ณผ Queue์ ๋น๊ต (์ธํฐ๋ทฐ ๋๋น)
๐ก 1. Stack(์คํ)์ด๋? 1. ์คํ : Stack์ ๋จผ์ ๋ค์ด๊ฐ ์์๊ฐ ๊ฐ์ฅ ๋์ค์ ๋์ค๊ฒ ๋๋ ์ ์ ํ์ถ(LIFO, Last In First Out)์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. 2. ๊ตฌํ : Stack์ ๊ตฌํํ ๋๋, ์์๋ฅผ ์ ๊ฑฐํด์ผ ํ๋ ArrayList๋ณด๋ค๋ index๋ฅผ ์กฐ์ ํ๊ณ , ์ด๊ธฐํ ํ๋ ๋ฐฉ์๊ณผ ํจ๊ป Array๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. 3. ์ฃผ์ ์ฐ์ฐ : 1. push(์ฝ์ ) : Stack์ ์๋ก์ด item์ ์ถ๊ฐํ๋ค. 2. pop(์ญ์ ) : ๊ฐ์ฅ ์์ ์๋ ์์๋ฅผ returnํ๊ณ , Stack์์ ํด๋น ์์๋ฅผ ์ ๊ฑฐํ๋ค. 3. peek(์ต์๋จ ์์ดํ ๋ฐํ) : ๊ฐ์ฅ ์์ ์๋ ์์๋ฅผ return ํ๋ค. pop๊ณผ๋ ๋ค๋ฅด๊ฒ ์คํ์์ ํด๋น ์์๋ฅผ ์ ๊ฑฐํ์ง ์๋๋ค. + top : ๊ฐ์ฅ ์..
[์๋ฃ๊ตฌ์กฐ] Array์ LinkedList์ ์ฐจ์ด (์ธํฐ๋ทฐ ๋๋น)
๐ก 1. Array(๋ฐฐ์ด), Array VS ArrayList 1. ๋ฐฐ์ด : ๋ฐฐ์ด์ ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. 2.ํฌ๊ธฐ : ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ๊ณ ์ ๊ธธ์ด์ด๋ฏ๋ก, ์ถ๊ฐ์ ์ผ๋ก ๋๋ฆด ์ ์๋ค. Array๋ ์ด๊ธฐํ ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ฒ ๋๋ค. 3. ์ฅ์ : ๋ฐ์ดํฐ์ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์, 0๋ถํฐ ์์ํ๋ index๊ฐ ์กด์ฌํ๋ฉฐ, ์ด index๋ฅผ ํ์ฉํด ํน์ ์์์ ๋ํด ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฉฐ ์กฐ์์ด ๊ฐ๋ฅํ ๊ฒ์ด ์ฅ์ ์ด๋ค. 4. ๋จ์ : ๋ฐ์ดํฐ์ ์ฝ์ ์ด๋ ์ญ์ ๊ฐ ์ค๊ฐ์์ ์ด๋ค์ง๋ ๊ฒฝ์ฐ, ๊ทธ ๋ค์ ๋ชจ๋ ์์๋ฅผ ํ ์นธ ์ ๋น๊ธฐ๊ฑฐ๋, ๋ฐ์ด์ค์ผ ํ๋ ์์๊ฐ ์์ผ๋ฏ๋ก ์๋์ ๋น์ฉ์ด ์๊ตฌ๋๋ค. O(N) 5. ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒฝ์ฐ : ์์๋ฅผ ๋ณด์ฅํด์ค์ผ ํ๋ ๋ฐ์ดํฐ์ ๋ํด ์ฌ์ฉํ๋ฉด ์ข๋ค. index๊ฐ ์๋ฏธ๋ฅผ ๋ดํฌํ ์ ์๋ ๋ฐ์ดํฐ..
[๊ฐ๋ฐ๊ณตํต] Call by value์ Call by reference (Java, Python, C/C++)
๐ 1. Call by value์ Call by reference๋? Call by value์ Call by reference๋ ์ ์ ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ ์์๋ ์์ฃผ ๋์ฌ๋งํผ ๊ธฐ์ด์ ์ด๋ฉด์ ์ค์ํ ๊ฐ๋ ์ด๋ค. ํ์๋ ๋ชจ ์ธํฐ๋ทฐ ์ค ํด๋น ์ง๋ฌธ์ ๋ฐ์ ์ ์ด ์๋๋ฐ, ๋ฉด์ ์ค๋น๋ ์ ๋์ง ์์๊ณ ๋นํฉํ๋ ํฐ๋ผ ๋ถ์กฑํ๊ฒ ๋๋ตํ๋ ๊ฒฝํ์ด ์๋ค. ์ด๋ฐ ์ผ์ด ๋ค์๋ ์๋๋ก ์ ๋๋ก ์ ๋ฆฌ๋ฅผ ํด๋ณด์. ๋ฉ์๋์ ์ธ์๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋์ด์ ธ์๋ค. (๋ฌผ๋ก ์๋ง์ ์ธ์ ์ ๋ฌ ๋ฐฉ์์ด ์์ง๋ง, ๋ํ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ๋ ๊ฐ์ง๋ฅผ ์๋ฏธํจ.) ํ๋๋ Call by Value๋ก, ์ง์ญํ๋ฉด ๊ฐ์ ์ํ ์ ๋ฌ์ ํด๋นํ๋ค. ์ค์ ๊ฐ(caller)๊ณผ ์ธ์๋ก ์ ๋ฌํ ๊ฐ(callee)์ด ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ์ค์ ์๋ก ๋์ผํ์ง ์๊ณ ๊ฐ์ ๋ณต..
[Algorithm] ํ ์ ๋ ฌ (Heap Sort)
ํ ์ ๋ ฌ (Heap Sort) ํ ์ ๋ ฌ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(NlogN)์ธ ์ ๋ ฌ์ผ๋ก, ๋ฒ๋ธ / ์ ํ / ์ฝ์ ์ ๋ ฌ์ ๋นํด ์ฐ์ํ ์ฑ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค. ์ฐ์ ํ ์ ๋ ฌ์ ์ดํด๋ณด์. ํ์ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋๋ก, ์ด 'Heap' ์๋ฃ๊ตฌ์กฐ์ ํน์ฑ์ ํ์ฉํ ์ ๋ ฌ ๋ฐฉ๋ฒ์ด๋ค. ํ์ ์์ ์ด์งํธ๋ฆฌ์ ์ผ์ข ์ผ๋ก, ์ฌ๋ฌ ๊ฐ๋ค ์ค์์ ์ต์๊ฐ ํน์ ์ต๋๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด ์ค๊ณ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํ์ ๋์จํ ์ ๋ ฌ ์ํ(๋ฐ ์ ๋ ฌ ์ํ)๋ฅผ ์ ์งํ๊ณ , ์ด๋ฅผ ์ฝ๊ฒ ํ์ดํ๋ฉด ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํญ์ ํฐ(์์) ์ด์ง ํธ๋ฆฌ๋ฅผ ๋งํ๋ค. ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํฐ ์ง, ์์ ์ง์ ๋ฐ๋ผ ํ์ ์ข ๋ฅ๊ฐ ๋๋๋ค. - ์ต๋ ํ (Max Heap) : ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํฐ ํ → ๋ฃจํธ ..