๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ–ฅ Computer Science61

[๐Ÿ’ป Programming] Clean Code - ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์„ ์จ๋ผ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ๊ธ€์—” ๊นจ๋—ํ•œ ์ฝ”๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด์•˜๋Š”๋ฐ์š”. ์ด๋ฒˆ์—” ์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ฒซ๋ฒˆ์งธ ๊ทœ์น™ "์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„" ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜๋„๋ฅผ ๋ถ„๋ช…ํžˆ ๋ฐํ˜€๋ผ ๋‚˜์œ ์˜ˆ โŒ ๋งŒ์•ฝ ์•„๋ž˜์™€ ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ญ˜ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค. func abc(a:String,b:String) -> String { return a+b } ์ข‹์€ ์˜ˆ ๐Ÿ‘๐Ÿป ์œ„์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•จ์ˆ˜์ด์ง€๋งŒ ์•„๋ž˜์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๋ฉด ํ™•์‹คํžˆ ์„ฑ๊ณผ ์ด๋ฆ„์„ ๋ฐ›์•„์„œ ํ’€๋„ค์ž„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๊ตฌ๋‚˜ ๋ผ๊ณ  ์•Œ ์ˆ˜ ์žˆ๋‹ค. func makeFullName(firstName:String,lastName:String) -> String { let fullName = firstName + lastName .. 2021. 6. 13.
[๐Ÿ’ป Programming] Clean Code - ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ž€? (feat.์จ์•ผํ•˜๋Š” ์ด์œ ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜๋ถ€ํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ผ๋ฉด ๊ผญ ์ฝ์–ด๋ด์•ผ ํ•˜๋Š” "ํด๋ฆฐ ์ฝ”๋“œ" ์ฑ…์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ดํ•ดํ•œ๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์œ ์ฝ”๋“œ๋ž€? ํ•ด๋…ํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ ์ƒ์‚ฐ์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ์ฝ”๋“œ ์ผ์ • ๊ธฐํ•œ์— ๊ธ‰ํ•˜๊ฒŒ ์ง  ์ฝ”๋“œ ์ฆ‰, ํ•œ๋งˆ๋””๋กœ ๊ธ‰ํ•˜๊ฒŒ ๋Œ€์ถฉ ์งœ์„œ ์ฝ”๋“œ๊ฐ€ ์ฝ๊ธฐ ์–ด๋ ค์›Œ์ง€๊ณ  ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ ์  ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋Š˜์–ด๊ฐ€๋Š” ์ฝ”๋“œ๊ฐ€ ๋‚˜์œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. "์•„๋‹ˆ ๊ทธ๋Ÿฌ๋ฉด ์ผ์ • ๊ธฐํ•œ์„ ๋นก๋นกํ•˜๊ฒŒ ์žก์€ ๊ด€๋ฆฌ์ž ์ž˜๋ชป ์•„๋‹ˆ์•ผ?" ๋ผ๊ณ  ์งˆ๋ฌธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์ฑ…์—์„œ๋Š” ์˜์‚ฌ๋ผ๋Š” ์ง์—…์œผ๋กœ ๋น„์œ ๋ฅผ ํ•˜๋Š”๋ฐ์š”. ๋งŒ์•ฝ ๋‹น์‹ ์ด ์˜์‚ฌ์ธ ์ƒํ™ฉ์—์„œ ๊ด€๋ฆฌ์ž๊ฐ€ ์‹œ๊ฐ„ ๋‚ด์— ์ˆ˜์ˆ ์„ ๋งˆ์น˜๊ธฐ ์œ„ํ•ด์„œ ์†์„ ์”ป๋Š” ๊ฒƒ์„ ์ƒ๋žตํ•˜๋ผ๊ณ  ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ๋งŒ์•ฝ ํ™˜์ž์—๊ฒŒ ๋ฌด์Šจ ์ผ์ด ์ƒ๊ฒผ๋‹ค๋ฉด ๋ˆ„๊ตฌ์˜ ์ž˜๋ชป์ด ํด๊นŒ์š”? ๋‹น์—ฐํžˆ ์ˆ˜์ˆ ์„ ๋งก์€ ์˜์‚ฌ์˜ ์ž˜๋ชป์ด ํด๊ฒ๋‹ˆ.. 2021. 6. 13.
[CS] TDD(Test-Driven-Development)๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ฌด์กฐ๊ฑด ๊ฐ–์ถฐ์•ผ ํ•˜๋Š” ์ž์„ธ์ธ TDD์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ •๋ง ์ค‘์š”ํ•œ ๊ฐœ๋…์ธ๋ฐ ์ด์ œ์„œ์•ผ ๋‹ค๋ฃจ๊ฒŒ ๋˜๋‹ค๋‹ˆ... ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! TDD(ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ)๋ž€? ๐Ÿค” "ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์€ ๋งค์šฐ ์งง์€ ๊ฐœ๋ฐœ ์‚ฌ์ดํด์„ ๋ฐ˜๋ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ๋จผ์ € ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฒ€์ฆํ•˜๋Š” ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ๊ทธ๋Ÿฐ ํ›„์—, ๊ทธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํ‘œ์ค€์— ๋งž๋„๋ก ๋ฆฌํŒฉํ† ๋งํ•œ๋‹ค. ์ด ๊ธฐ๋ฒ•์„ ๊ฐœ๋ฐœํ–ˆ๊ฑฐ๋‚˜ '์žฌ๋ฐœ๊ฒฌ' ํ•œ ๊ฒƒ์œผ๋กœ ์ธ์ •๋˜๋Š” Kent Beck์€ 2003๋…„์— TDD๊ฐ€ ๋‹จ์ˆœํ•œ ์„ค๊ณ„๋ฅผ ์žฅ๋ คํ•˜๊ณ  ์ž์‹ ๊ฐ์„ ๋ถˆ์–ด๋„ฃ์–ด์ค€๋‹ค๊ณ  ๋งํ•˜์˜€๋‹ค." - ์œ„ํ‚ค ๋ฐฑ๊ณผ - ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์“ฐ๊ธฐ .. 2021. 6. 7.
[CS] F.I.R.S.T ์›์น™์ด๋ž€? (feat.UnitTest) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ์ฃผ์ œ๋Š” ์ข‹์€ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ F.I.R.S.T ์›์น™์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ F.I.R.S.T ์›์น™์ด๋ž€? First ์›์น™์€ 'ํด๋ฆฐ ์ฝ”๋“œ' ๋ผ๋Š” ์•„์ฃผ ์œ ๋ช…ํ•œ ์ฑ…์˜ ์ €์ž์ธ Bob Martin์ด ์ฒ˜์Œ ์ œ์‹œํ•œ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์€ ํšจ์œจ์ ์ด๊ณ  ์ข‹์€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ 5๊ฐ€์ง€ ์š”์†Œ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น ๋ฅด๊ณ (Fast),๋…๋ฆฝ์ ์ด๊ณ (Independent),๋ฐ˜๋ณต๊ฐ€๋Šฅํ•˜๋ฉฐ(Repeatable),์ž์ฒด ๊ฒ€์ฆ๊ฐ€๋Šฅํ•˜๊ณ (Self-validating),์ฒ ์ €ํ•˜๊ณ  ์ ์‹œ์—(Thorough&Timely) ์ž‘์„ฑ ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ๋ฅผ First ์›์น™์„ ์ค€์ˆ˜ํ•œ ์œ ๋‹›ํ…Œ์ŠคํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด 5๊ฐ€์ง€ ์›์น™์— ๋Œ€ํ•ด์„œ ์„ธ์„ธํ•˜๊ฒŒ ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. Fast ์œ ๋‹› ํ…Œ์ŠคํŠธ๋Š” ๋น ๋ฅด๊ฒŒ .. 2021. 6. 7.
[Algorithm] ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS,Depth-First-Search)์ด๋ž€? (feat.Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ์—„์ฒญ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ถœ์ œ๋˜๊ณ  ์•Œ์•„๋‘๋ฉด ์ •๋ง ์œ ์šฉํ•œ DFS์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! DFS๋ž€? "๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์€ ๋งน๋ชฉ์  ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์˜ ํ•˜๋‚˜๋กœ ํƒ์ƒ‰ํŠธ๋ฆฌ์˜ ์ตœ๊ทผ์— ์ฒจ๊ฐ€๋œ ๋…ธ๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ , ์ด ๋…ธ๋“œ์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๋™์ž‘์ž ์ค‘ ํ•˜๋‚˜๋ฅผ ์ ์šฉํ•˜์—ฌ ํŠธ๋ฆฌ์— ๋‹ค์Œ ์ˆ˜์ค€์˜ ํ•œ ๊ฐœ์˜ ์ž์‹๋…ธ๋“œ๋ฅผ ์ฒจ๊ฐ€ํ•˜๋ฉฐ, ์ฒจ๊ฐ€๋œ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๋ชฉํ‘œ๋…ธ๋“œ์ผ ๋•Œ๊นŒ์ง€ ์•ž์˜ ์ž์‹ ๋…ธ๋“œ์˜ ์ฒจ๊ฐ€ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด ๊ฐ€๋Š” ๋ฐฉ์‹์ด๋‹ค." - ์œ„ํ‚ค ๋ฐฑ๊ณผ - ์ด๊ฒŒ ๋ญ”๋ง์ด์•ผ....;;; ์‰ฝ๊ฒŒ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด์„œ ์„ค๋ช…๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ง€๊ตฌ ์•ˆ์— ์„ธ ๋‚˜๋ผ๋งŒ ์žˆ๊ณ  ๋ชจ๋“  ๋‚˜๋ผ์™€ ๋‚˜๋ผ์˜ ๋„์‹œ๋“ค์„ ํƒ์ƒ‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์‚ฌ๋žŒ์€ "๋‚œ ๋จผ์ € ์–ด๋–ค ๋‚˜๋ผ๋“ค์ด ์žˆ๋Š”์ง€ ๋ถ€ํ„ฐ ํ™•์ธํ•˜๊ณ  ๊ทธ ๋‚˜๋ผ ์•ˆ์— ์žˆ๋Š”.. 2021. 6. 5.
[OS] ์ปดํŒŒ์ผ๊ณผ ๋งํฌ ๊ทธ๋ฆฌ๊ณ  ๋นŒ๋“œ์™€ ์‹คํ–‰์˜ ์ฐจ์ด๋Š”?(Differences Build,Complile,Run and Link) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ์ •๋ง ๊ธฐ์ดˆ์ ์ธ ์ปดํŒŒ์ผ๊ณผ ๋นŒ๋“œ์™€ ๋งํฌ์™€ ๋Ÿฐ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ๊ฑฐ์—์š”! ๋Œ€์ถฉ์€ ๋ญ๊ฐ€ ๋ญ”์ง€ ์ง์ž‘์€ ๊ฐ€๋Š”๋ฐ ํ•œ๋งˆ๋””๋กœ ์ •๋ฆฌํ•˜๋ ค๋‹ˆ๊น ๋ง์ด ์•ˆ๋‚˜์˜ค๋”๋ผ๊ตฌ์š”... ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Compile "์ปดํŒŒ์ผ๋Ÿฌ๋Š” ํŠน์ • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์“ฐ์—ฌ ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์˜ฎ๊ธฐ๋Š” ์–ธ์–ด ๋ฒˆ์—ญ ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•œ๋‹ค." - ์œ„ํ‚ค ๋ฐฑ๊ณผ - ์ฆ‰, ์‚ฌ๋žŒ์ด ์ž‘์„ฑํ•œ ์–ธ์–ด๋ฅผ ๊ธฐ๊ณ„๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ๋ฒˆ์—ญํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ปดํŒŒ์ผ์ž…๋‹ˆ๋‹ค. (iOS๋Š” Xcode์—์„œ ์ปดํŒŒ์ผ์„ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฃผ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” LLVM/Clang์ด๋ผ๊ณ  ํ•˜๋„ค์š”. ์ด๊ฑด ๋‹ค์Œ์— ๋” ๊นŠ์ด ์•Œ์•„๋ณด๋„๋ก ํ• ๊ฒŒ์š”!) Build "๋นŒ๋“œ๋Š” ์†Œ์Šค ์ฝ”๋“œ ํŒŒ์ผ์„ ์ปดํ“จํ„ฐ๋‚˜ ํœด๋Œ€ํฐ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐ€๊ณต๋ฌผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๋งํ•˜๊ฑฐ๋‚˜.. 2021. 6. 2.
[OS] ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ๊ทธ๋ฆฌ๊ณ  ์ง๋ ฌ๊ณผ ๋™์‹œ๋Š” ๋ฌด์—‡์ผ๊นŒ?(Sync vs Async & Serial vs Concurrent) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ณ ์ˆ˜(?)์ฒ˜๋Ÿผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ง€์‹์ธ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ ๊ทธ๋ฆฌ๊ณ  ์ง๋ ฌ๊ณผ ๋™์‹œ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Sync(๋™๊ธฐ) ๋™๊ธฐ์˜ ๋œป์€ ๋ง ๊ทธ๋Œ€๋กœ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์ด ๋œป ๋•Œ๋ฌธ์— ๋” ํ—ท๊ฐˆ๋ฆฌ๊ธฐ๋„ ํ•˜๋Š”๋ฐ์š”. ๋™๊ธฐ๋กœ ์ž‘์—…์„ ํ–ˆ์„๋• ๋™์‹œ์— ์ผ์–ด๋‚˜์ง€ ์•Š๊ณ  ์ฐจ๋ก€๋Œ€๋กœ ์ผ์–ด๋‚˜์ฃ ? ๊ทธ๋Ÿฌ๋ฉด ๋„๋Œ€์ฒด ๋ญ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚œ๋‹ค๋Š” ๊ฒƒ์ผ๊นŒ์š”? ๋ฐ”๋กœ ์š”์ฒญ๊ณผ ์‘๋‹ต์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊น "๋‚ด๊ฐ€ ์ด๊ฑฐ ํ•˜๋ผ๊ณ  ์ง€์‹œํ–ˆ์œผ๋ฉด ๋๋‚ผ๋•Œ๊นŒ์ง€ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€๋งˆ! ์š”์ฒญ์„ ํ–ˆ์œผ๋ฉด ๋™์‹œ์— ์‘๋‹ตํ•ด!" ์ด๋Ÿฐ ๋œป์ด์ฃ .. ์ผ๋ฐ˜์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋ฉด ์ž‘์„ฑํ•œ ์ˆœ์„œ๋Œ€๋กœ ํ˜ธ์ถœ๋˜์ฃ ? ์•„๋ฌด๋Ÿฐ ์„ธํŒ…์„ ํ•ด๋†“์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ณดํ†ต ๋™๊ธฐ๋กœ ์ž‘์—…์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. func ์ž‘์—…1() { print("์ž‘์—…1 ์‹œ์ž‘") Thread... 2021. 5. 31.
[Algorithm] ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? (feat.Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ์—์„œ ์•„์ฃผ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! ๋‹ค์ต์ŠคํŠธ๋ผ๋ž€? ๐Ÿค” ๋‚˜๋ฌด ์œ„ํ‚ค์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. "์Œ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๊ทธ๋ž˜ํ”„์˜ ํ•œ ์ •์ ์—์„œ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๊ฐ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค." ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ํ•œ ์ •์ ์—์„œ ๋‹ค๋ฅธ ์ •์ ์œผ๋กœ ์ด๋™ํ•  ๋•Œ ๊ฐ€์žฅ ๋น ๋ฅธ ๊ธธ์„ ์ฐพ์•„์ฃผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์—์š”. ๊ทธ๋ž˜ํ”„ ์„ค๋ช… ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹œ์ž‘ ์ •์ ์€ 1๋กœ ๋ชฉํ‘œ ์ •์ ์„ 4๋กœ ๋‘์—ˆ์„ ๋•Œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฑฐ๋ฆฌ๋Š” ๋ช‡์ผ๊นŒ์š”? 1 - 5 - 4 ๋กœ ๊ฐ€๋Š” ๊ฒฝ์šฐ๊ฐ€ 3 + 1 = 4๋กœ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ธธ์ด๊ฒ ์ฃ ? ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํžˆ ๋ณด์ด๋Š” ๊ฒฝ๋กœ๋Š” ๋ˆˆ์œผ๋กœ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณต์žกํ•œ ๊ฒฝ๋กœ์ผ์ˆ˜๋ก ์ฐพ๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด.. 2021. 5. 22.
[Algorithm] ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ(Floyd Warshall) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? (feat.Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ์—์„œ ์•„์ฃผ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ์ด๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ์ด๋ž€? ๐Ÿค” ์œ„ํ‚ค ๋ฐฑ๊ณผ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. "ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ณ€์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์Œ์ด๊ฑฐ๋‚˜ ์–‘์ธ (์Œ์ˆ˜ ์‚ฌ์ดํด์€ ์—†๋Š”) ๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„์—์„œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋“ค์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค." ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ๋ชจ๋“  ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์—์š”. ๊ทธ๋ž˜ํ”„ ์„ค๋ช… ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ• ๊ฒŒ์š”. (ํŒŒ๋ž€์ƒ‰ ๋™๊ทธ๋ผ๋ฏธ๋Š” ์ •์ , ์‚ฌ์ด์— ์ˆซ์ž๋Š” ๊ฑฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.) ๋งŒ์•ฝ 1๋ฒˆ ์ •์ ์—์„œ 3๋ฒˆ ์ •์ ์œผ๋กœ ๊ฐ€๋ ค๋ฉด ์–ด๋–ค ์ •์ ์„ ์ด์šฉํ•ด์•ผ ๊ฐ€์žฅ ์งง์„๊นŒ์š”? ์ •๋‹ต์„ ์•Œ๊ธฐ ์œ„ํ•ด์„  ์ค‘๊ฐ„์— ๋ชจ๋“  ์ •์ ์„ ๊ฑฐ์ณ์„œ ๊ฐ„ ๋‹ค์Œ ๊ฐ€์žฅ ์งง์€ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด์•ผ ํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค. 1๋ฒˆ -> 2๋ฒˆ -> 3๋ฒˆ 3.. 2021. 5. 17.
[CS] ์ผ๊ธ‰ ๊ฐ์ฒด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ํด๋กœ์ ธ์— ๋Œ€ํ•ด์„œ ์ •ํ™•ํžˆ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ์•Œ์•„๋ณด๋˜ ์™€์ค‘์— "ํด๋กœ์ ธ๋Š” ์ผ๊ธ‰๊ฐ์ฒด์ด๋‹ค" ๋ผ๋Š” ๋ง์—์„œ ์ผ๊ธ‰๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜๊ฐ€ ์—†์–ด์„œ ๊ตฌ์ฒด์ ์œผ๋กœ ์•Œ์•„๋ณด๊ณ  ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! First-Class-Object(์ผ๊ธ‰ ๊ฐ์ฒด) ์ผ๊ธ‰ ๊ฐ์ฒด๋ž€ ๋ฌด์—‡์ผ๊นŒ?๐Ÿง ์œ„ํ‚ค๋ฐฑ๊ณผ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. "์ผ๊ธ‰ ๊ฐ์ฒด๋ž€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์— ์ผ๋ฐ˜์ ์œผ๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์„ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋ณดํ†ต ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ธฐ๊ธฐ, ์ˆ˜์ •ํ•˜๊ธฐ, ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๊ธฐ์™€ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ์ง€์›ํ•  ๋•Œ ์ผ๊ธ‰ ๊ฐ์ฒด๋ผ๊ณ  ํ•œ๋‹ค." ์ฆ‰, ํ•จ์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„ฃ์–ด์ค„ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฆฌํ„ด๊ฐ’์œผ๋กœ๋„ ์“ฐ์ผ ์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์ผ๊ธ‰ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. 1960๋…„๋Œ€, ์˜๊ตญ์˜ ์ปดํ“จํ„ฐ ๊ณผํ•™์ž ํฌ๋ฆฌ์Šคํ† ํผ ์ŠคํŠธ๋ž˜์น˜๊ฐ€ ์ฒ˜์Œ .. 2021. 5. 12.
[Network] HTTP ์ƒํƒœ ์ฝ”๋“œ๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ๊ฑด REST API๋กœ ํ†ต์‹ ํ•  ๋•Œ ์„œ๋ฒ„์— ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋ฉด ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ๋ฐ›๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ์š”์ฒญ์ด 200๋Œ€์ด๋ฉด ์„ฑ๊ณต์ด๊ณ  400๋Œ€์ด๋ฉด ์˜ค๋ฅ˜์ธ๊ฑด ์•Œ์•˜์ง€๋งŒ ๊ตฌ์ฒด์ ์œผ๋ก  ์•Œ์ง€ ๋ชปํ•ด์„œ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„ํ‚ค๋ฐฑ๊ณผ์— ๋ณด๋ฉด ๋‹ค ๋‚˜์™€์žˆ์ง€๋งŒ ๊ตณ์ด ์ •๋ฆฌํ•˜๋Š” ์ด์œ ๋Š” ๋ชฐ๋ž๋˜ ๊ฒƒ๋“ค์„ ์ œ ๋ธ”๋กœ๊ทธ๋ฅผ ํ†ตํ•ด์„œ ์ฐพ๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ •๋ฆฌํ•ด๋†“์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ 100~ ์š”์ฒญ์„ ๋ฐ›์•˜๊ณ  ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 200~ ์š”์ฒญํ•œ ๋™์ž‘์„ ์ดํ•ดํ–ˆ๊ณ  ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 200 = ์š”์ฒญ์„ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ–ˆ์Œ. 201 = ์„ฑ๊ณต์ ์œผ๋กœ ์š”์ฒญ๋˜์—ˆ์œผ๋ฉฐ ์„œ๋ฒ„๊ฐ€ ์ƒˆ๋ฆฌ์†Œ์Šค๋ฅผ ์ž‘์„ฑํ–ˆ์Œ 202 = ์š”์ฒญ์„ ์ ‘์ˆ˜ํ–ˆ์ง€๋งŒ ์•„์ง ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•˜์Œ. 203 = ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ–ˆ์ง€๋งŒ ๋‹ค.. 2021. 3. 17.
[Programming] SOLID ์›์น™์ด๋ž€? (feat.iOS ๊ฐœ๋ฐœ์ž) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ๋‹ค๋ค„๋ณผ ์ฃผ์ œ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (OOP) ์—์„œ ๊ผญ ์ง€์ผœ์•ผ ํ•˜๋Š” ์›์น™์ธ SOLID ์ž…๋‹ˆ๋‹ค. SOLID๋ฅผ ์•Œ์•„๋ณด๋Š” ์ด์œ ๋Š” Swift๋กœ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ, ์บก์Šํ™”, ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ ๋“ฑ ๋งŽ์€ OOP ๊ฐœ๋…์„ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๋ณด๋ฉด ์–ด๋–ค ๊ฒƒ์ด ํšจ์œจ์ ์ธ์ง€ ์–ด๋–ค ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ OOP๋ฅผ ์ง€ํ‚ค๋ฉด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ธ์ง€๋Š” ์•Œ์ง€ ๋ชปํ•œ์ฑ„ ๊ทธ๋ƒฅ ์ฝ”๋”ฉ๋งŒ ํ–ˆ์—ˆ์ฃ ... ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์šฐ์—ฐํžˆ "OOP์—์„œ ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•˜๋Š” ์›์น™์ด 5๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ ๊ทธ๊ฒƒ์ด SOLID ์›์น™์ด๋ผ ๋ถˆ๋ฆฐ๋‹ค." ๋ผ๋Š” ๊ฒƒ์„ ๋“ฃ๊ณ  ์ด๊ฒŒ ๋ฌด์—‡์ธ์ง€ ๊ทธ๋ฆฌ๊ณ  ์™œ ์ง€์ผœ์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ ํ• ๊ฒŒ์š”~ SOLID ์›์น™์€ ๋ฌด์—‡์ผ๊นŒ์š”?๐Ÿง ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ SOLID๋ž€ ๋กœ๋ฒ„ํŠธ ๋งˆํ‹ด์ด .. 2021. 3. 4.
728x90
๋ฐ˜์‘ํ˜•