๊ทธ๋ฆฌ๊ณ  ์ฃผ๋‹˜๊ป˜์„œ๋Š” โ€œ๋ฉด์ ‘์„ ํ•˜๊ณ  ์ œ์˜๋ฅผ ๋ฐ›์•„๋“ค์ด๋ผโ€๊ณ  ๋ช…ํ•˜์…จ์Šต๋‹ˆ๋‹ค.

ํ—ˆ๊ตฌ์˜ ์‚ฌ๊ฑด์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์‹คํ™”.
๋ชจ๋“  ์šฐ์—ฐ์€ ์šฐ์—ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค.
๋ชจ๋“  ๋†๋‹ด์€ ์žฌ๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

โ€” ์„ธ๋ฅด๊ฒŒ์ด, ์•ˆ๋…•ํ•˜์„ธ์š”. ๋‚ด ์ด๋ฆ„์€ Bibi์ด๊ณ , ๋‚ด ๋™๋ฃŒ๋Š” Bob์ด๊ณ  ์šฐ๋ฆฌ๋Š” ๋‘ ๋ช…์ž…๋‹ˆ๋‹ค... ํŒ€ ๋ฆฌ๋”์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋งค์šฐ ์˜ค๋žซ๋™์•ˆ ํ”„๋กœ์ ํŠธ์— ์ฐธ์—ฌํ•ด ์™”์œผ๋ฉฐ ๋ชจ๋“  ํ•ด์•ผ ํ•  ์ผ์„ ์•”๊ธฐํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์˜ค๋Š˜์€ ๊ท€ํ•˜์˜ ์ง€์‹๊ณผ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ์†Œํ†ตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๊ท€ํ•˜์˜ ์ด๋ ฅ์„œ์— ๋”ฐ๋ฅด๋ฉด ๊ท€ํ•˜๋Š” ์ฃผ๋กœ .NET์œผ๋กœ ์ž‘์—…ํ•˜๊ณ , ๋น„๋™๊ธฐ ๋ฐ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ดํ•ดํ•˜๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ์ž์‹ ์žˆ๊ฒŒ ์ˆ™๋‹ฌํ•˜๊ณ , ๋Œ€๊ทœ๋ชจ ๋ชจ๋“ˆ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฆฌํŒฉํ† ๋งํ•˜๊ณ  ์„ค๊ณ„ํ•œ ๊ฒฝํ—˜์ด ์žˆ๋Š” ๊ณ ํ•™๋…„์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ด ์–ด๋ฆฌ์„์€ ์งˆ๋ฌธ์„ ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž์‹ ์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ๋ง์”€ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
โ€” ์•ˆ๋…•ํ•˜์„ธ์š”, ๋น„๋น„์™€ ๋ณด๋ฐ”. ์ €๋Š” ์ฃผ๋กœ .NET์œผ๋กœ ์ž‘์—…ํ•˜๊ณ , ๋น„๋™๊ธฐ ๋ฐ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ดํ•ดํ•˜๊ณ , ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๊ธฐ๋ณธ์— ๋Œ€ํ•œ ์ž์‹ ๊ฐ ์žˆ๋Š” ๋ช…๋ น์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ๋Œ€๊ทœ๋ชจ ๋ชจ๋“ˆ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฆฌํŒฉํ„ฐ๋งํ•˜๊ณ  ์„ค๊ณ„ํ•œ ๊ฒฝํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค.
- ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž, ์‹œ์ž‘ํ•ฉ์‹œ๋‹ค! ์›Œ๋ฐ์—…์„ ์œ„ํ•ด ๋” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋‚˜๋ฌด๋ฅผ ์•Œ๊ณ  ์žˆ๊ณ  ๊ทธ ๋‚˜๋ฌด๋ฅผ ํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
- ์ฐธ๋‚˜๋ฌด, ์•„์นด์‹œ์•„, ๋‹จํ’๋‚˜๋ฌด, ์ฒด๋ฆฌ... ๊ทธ๋ž˜์„œ ๋‹น์žฅ ๋‹ค๋ฅธ ๊ฒƒ์€ ๋– ์˜ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŠธ๋ฆฌ ํƒ์ƒ‰์˜ ๊ฒฝ์šฐ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ ๋“ฑ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์—์„œ ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋˜ํ•œ ๋‚˜๋ฌด์— ์˜ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ๊ณผ ๋‹ค๋žŒ์ฅ๊ฐ€ ๊ฐ€๋” ์‚ฌ๋Š” ๋‚˜๋ฌด์— ๊ตฌ๋ฉ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
- ๊ดœ์ฐฎ์€. ๊ทธ๋ ‡๋‹ค๋ฉด ์งˆ๋ฌธ์€ - ์ฐธ์กฐ๋กœ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
โ€” ์ฐจ์ด์ ์€ ์ฒซ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐ๋กœ ์ „๋‹ฌ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์—๋Š” ์™„์ „ํžˆ ๋ณต์‚ฌ๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.
โ€”๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ์•Œ๊ณ  ์žˆ๋‚˜์š”?
โ€” ์ €๋Š” Lev Nikolaevich Tolstoy ๋ฐฑ์ž‘์˜ ์ž‘ํ’ˆ์„ ๊นŠ์ด ์กด๊ฒฝํ•˜๋ฉฐ ์–ด๋ ธ์„ ๋•Œ "๋ชฌํ…Œ ํฌ๋ฆฌ์Šคํ†  ๋ฐฑ์ž‘"์ด๋ผ๋Š” ์ฑ…์„ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋“œ๋ผํ˜๋ผ ๋ฐฑ์ž‘์„ ๋ˆ„๊ฐ€ ๋ชจ๋ฅด๋‚˜์š”?!
โ€” "SOLID"๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
- "๋‹จ๋‹จํ•จ", ๋œ ์ž์ฃผ - "๋‹จ๋‹จํ•จ". ๋ฌผ๋ก  ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
โ€” ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?
- ๋‚˜๋„ ์•Œ์•„์š”. ์ „ํ˜•์ ์ธ ์“ฐ๋ ˆ๊ธฐ ์ˆ˜์ง‘๊ฐ€๋Š” ๋ฐ์€ ์ฃผํ™ฉ์ƒ‰ ์ž‘์—…๋ณต๊ณผ ์•ˆ์ „ํ™”๋ฅผ ์‹ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Š” ์ฃผ๋กœ ๋ฐค์— ์“ฐ๋ ˆ๊ธฐ ์ˆ˜๊ฑฐ์ฐจ์—์„œ ์ผํ•ฉ๋‹ˆ๋‹ค. ์“ฐ๋ ˆ๊ธฐ ์ˆ˜์ง‘๊ฐ€์˜ ์ฃผ์š” ์ž„๋ฌด๋Š” ๋ƒ„์ƒˆ๋‚˜๋Š” ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ๋„๋กœ์— ์Ÿ์•„์ง€์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜๋ฉด์„œ ์“ฐ๋ ˆ๊ธฐํ†ต์˜ ๋‚ด์šฉ๋ฌผ์„ ์“ฐ๋ ˆ๊ธฐ ํŠธ๋Ÿญ ๋’ค์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์•ฝํ•˜๋ฉด, ์šฐ๋ฆฌ ์‚ฌํšŒ์—์„œ๋Š” ์“ฐ๋ ˆ๊ธฐ ์ˆ˜๊ฑฐ์ธ์˜ ์ค‘์š”์„ฑ์ด ๊ณผ์†Œํ‰๊ฐ€๋˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ๋“ค์˜ ์ผ์€ ๊ต์‚ฌ๋‚˜ ๋นต ๊ตฝ๋Š” ์‚ฌ๋žŒ์˜ ์ผ๋งŒํผ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
โ€” ๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜์˜ ๋งˆ์ง€๋ง‰ ์–ด๋ฆฌ์„์€ ์งˆ๋ฌธ: ์ธ๊ฐ„์ฒ˜๋Ÿผ ๋’ท๋‹ค๋ฆฌ๋กœ ๊ฑธ์„ ์ˆ˜ ์žˆ๋Š” ๊ตฌํ˜• ๋ง์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ๋Š” ํ˜„์žฌ ์‹œ๊ณต๊ฐ„ ์—ฐ์†์ฒด์™€ ์—ฐ๊ฒฐ๋œ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋™์—์„œ ๊ตฐ์‚ฌ์  ๊ฐˆ๋“ฑ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๊ฐ–์ถ˜ ๋ง ํ’€์„ ์‹คํ˜„ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. O(n * log(n))์—์„œ๋Š” ์ด ์ž‘์—…์„ ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๊นŒ?
- ํ ... ์šฐ์„  ๊ฐ€์น˜ํŒ๋‹จ์€ ํฌ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋งˆ์นจ๋‚ด ๊ตฌํ˜• ๋ง์˜ ์›…๋ฉ์ด๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์งˆ๋ฌธ์˜ ๊ณต์‹ํ™” ์ž์ฒด๊ฐ€ ๋ชจ๋“  ์˜๋ฏธ๋ฅผ ์žƒ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜ ์ž์‹ ๋„ ๋™์‹œ์— ์ด ๋ง์ด ๋˜๊ณ , ๊ทธ๋Ÿฐ ๋ง๋“ค์˜ ์›…๋ฉ์ด๊ฐ€ ๋˜๊ณ , ์ค‘๋™์ด ๋  ๊ฒƒ์ด๋‹ค. ์˜์›๊ณผ ๋ณ‘ํ•ฉ์˜ ๊ฒฝ์šฐ O(n * log(n) )๋Š” O(n ^n )์™€ ์™„์ „ํžˆ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
- ๊ณ ๋งˆ์›Œ์š”, ์„ธ๋ฅด๊ฒŒ์ด. ๋‹ค์‹œ ์ „ํ™”๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
- ์ •๋ง ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ฒœ๋งŒ์—์š”. ๋‹ค์‹œ ์ „ํ™”ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€