๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€384

[์•Œ๊ณ ๋ฆฌ์ฆ˜] DFS/ BFS ํƒ์ƒ‰(Search): ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ณผ์ • ๊ทธ๋ž˜ํ”„, ํŠธ๋ฆฌ ๋“ฑ์˜ ์ž๋ฃŒ๊ตฌ์กฐ ์•ˆ์—์„œ ํƒ์ƒ‰ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์ฃผ๋กœ ๋‹ค๋ฃฌ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ DFS์™€ BFS๊ฐ€ ์žˆ๋‹ค. ๋‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ๋”๋ณด๊ธฐ ์ž๋ฃŒ๊ตฌ์กฐ(Data Struture): ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ ์Šคํƒ๊ณผ ํ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ธฐ์ดˆ ๊ฐœ๋…์œผ๋กœ ๋‹ค์Œ ๋‘ ํ•ต์‹ฌ ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์‚ฝ์ž…(Push): ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž… ์‚ญ์ œ(Pop): ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(Overflow): ํŠน์ • ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๋ฅผ ๋„˜์€ ์ƒํƒœ์—์„œ ์‚ฝ์ž… ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฐœ์ƒ ์–ธ๋”ํ”Œ๋กœ์šฐ(Underflow): ํŠน์ • ์ž๋ฃŒ๊ตฌ์กฐ์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด์žˆ์ง€ ์•Š์€ ์ƒํƒœ์—์„œ ์‚ญ์ œ ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ์‹œ ๋ฐœ์ƒ ์Šคํƒ(Stack): ๋ฐ์ดํ„ฐ.. 2022. 3. 23.
[UIKit] ์•ฑ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด ์•ฑ์€ ํ˜„์žฌ ์ƒํƒœ์— ๋”ฐ๋ผ์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…๊ณผ ํ•  ์ˆ˜ ์—†๋Š” ์ž‘์—…์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์•ฑ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”ํ•  ๋•Œ๋งˆ๋‹ค ์•ฑ์˜ ๋™์ž‘์„ ์ ์ ˆํ•˜๊ฒŒ ์กฐ์ ˆํ•ด์ฃผ์–ด์•ผ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. UIKit์€ delegate ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ ์ ˆํžˆ ํ˜ธ์ถœํ•˜์—ฌ ์•ฑ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”ํ–ˆ์Œ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. Scene ๊ธฐ๋ฐ˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด ์ด๋ฒคํŠธ์— ๋Œ€์‘ Scene์„ ์ง€์›ํ•˜๋Š” ์•ฑ์—์„œ UIKit์€ ๋ผ์ดํ”„ ์‚ฌ์ดํด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ๊ฐ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Scene: ๊ธฐ๊ธฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์•ฑ UI์˜ ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜ ์‚ฌ์šฉ์ž๋Š” ๊ฐ ์•ฑ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ scene์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ์˜ scene์„ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ๋ณด์ด๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ scene์€ ๊ณ ์œ ์˜ ๋ผ์ดํ”„ ์‚ฌ์ดํด์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ์‹คํ–‰ ์ƒํƒœ์— ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Scene์€ ๊ธฐ๋ณธ .. 2022. 3. 22.
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ตฌํ˜„(Implementation) ๊ตฌํ˜„(Implementation)์ด๋ž€ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ์Šค์ฝ”๋“œ๋กœ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์ด๋‹ค. ๊ตฌํ˜„ ๋ฌธ์ œ ์œ ํ˜•์€ ๋ชจ๋“  ๋ฒ”์œ„์˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ๋ฌธ์ œ ์œ ํ˜•์„ ํฌํ•จํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค. ๊ตฌํ˜„ ์œ ํ˜•์˜ ๋ฌธ์ œ๋Š” ํ’€์ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์€ ์‰ฝ์ง€๋งŒ ์†Œ์Šค์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ œ์ด๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•œ๋ฐ ์ฝ”๋“œ๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๊ธธ์–ด์ง€๋Š” ๋ฌธ์ œ ํŠน์ • ์†Œ์ˆ˜์  ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ํŒŒ์‹ฑ ํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ ๊ตฌํ˜„ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ์ œ์•ฝ ์‚ฌํ•ญ ๋ณ€์ˆ˜์˜ ํ‘œํ˜„ ๋ฒ”์œ„ ๋ฆฌ์ŠคํŠธ(๋ฐฐ์—ด) ํฌ๊ธฐ ์™„์ „ ํƒ์ƒ‰: ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฃผ์ € ์—†์ด ๋‹ค ๊ณ„์‚ฐํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์‹œ๋ฎฌ๋ ˆ์ด์…˜: ๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•œ ๋‹จ๊ณ„์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ์ง์ ‘ ์ˆ˜ํ–‰ ๊ตฌํ˜„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ์ƒํ•˜์ขŒ์šฐ ์—ฌํ–‰๊ฐ€ A๋Š” N x N ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜• ๊ณต๊ฐ„ ์œ„์— ์„œ ์žˆ๋‹ค. ์ด ๊ณต๊ฐ„์€ 1 x 1 ํฌ๊ธฐ์˜.. 2022. 3. 22.
UIKit UIKit ํ”„๋ ˆ์ž„์›Œํฌ๋Š” iOS ๋˜๋Š” tvOS ์•ฑ์— ํ•„์š”ํ•œ ์ธํ”„๋ผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ window์™€ view architecture์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Multi-Touch ๋ฐ ๊ธฐํƒ€ ์œ ํ˜•์˜ ์ž…๋ ฅ์„ ์•ฑ์— ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์ธํ”„๋ผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž, ์‹œ์Šคํ…œ ๋ฐ ์•ฑ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์‹คํ–‰ ๋ฃจํ”„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฐ–์—, UIKit ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ฌธ์„œ ๊ทธ๋ฆฌ๊ธฐ printing ์‚ฌ์šฉ์ค‘์ธ ๊ธฐ๊ธฐ ์ •๋ณด ํ…์ŠคํŠธ ๊ด€๋ฆฌ ๋ฐ ํ‘œ์‹œ ๊ฒ€์ƒ‰ ์ ‘๊ทผ์„ฑ ์•ฑ ํ™•์žฅ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๋ณ„ ๋‹ค๋ฅธ ๋ช…์‹œ์‚ฌํ•ญ์ด ์—†๋‹ค๋ฉด, UIKit์— ํฌํ•จ๋œ ํด๋ž˜์Šค๋“ค์„ ์•ฑ์˜ main thread ํ˜น์€ main dispatch queue์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ์ด ์ œํ•œ์€ UIRespond.. 2022. 3. 21.
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ทธ๋ฆฌ๋””(Greedy) ๊ทธ๋ฆฌ๋””(Greedy) ํƒ์š•๋ฒ• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ˜„์žฌ ์ƒํ™ฉ์—์„œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ์„ ๊ณ ๋ฅด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• ์„ ํƒ ์ ˆ์ฐจ(Selection Procedure): ํ˜„์žฌ ์ƒํƒœ์—์„œ ์ตœ์ ์˜ ํ•ด๋‹ต ์„ ํƒ ์ ์ ˆ์„ฑ ๊ฒ€์‚ฌ(Feasibility Check): ์„ ํƒ๋œ ํ•ด๊ฐ€ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ ํ•ด๋‹ต ๊ฒ€์‚ฌ(Solution Check): ์›๋ž˜์˜ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋Š”์ง€ ๊ฒ€์‚ฌ, ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์„ ํƒ ์ ˆ์ฐจ๋กœ ๋Œ์•„์™€ ์œ„์˜ ๊ณผ์ • ๋ฐ˜๋ณต ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์กฐ๊ฑด ํƒ์š•์Šค๋Ÿฌ์šด ์„ ํƒ ์กฐ๊ฑด(Greedy Choice Property): ์•ž์˜ ์„ ํƒ์ด ์ดํ›„์˜ ์„ ํƒ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ(Optimal Substructure): ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์ข… ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋ถ€๋ถ„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์  ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‹ค. ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ .. 2022. 3. 8.
[Swift] ์—ด๊ฑฐํ˜• (Enumerations) ์—ด๊ฑฐํ˜• ๊ด€๋ จ๋œ ๊ฐ’์œผ๋กœ case๊ฐ’์œผ๋กœ string, character, integer, floting ๊ฐ’๋“ค์„ ์‚ฌ์šฉ ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ(computed properties)๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ์ดˆ๊ธฐํ™”๋ฅผ ์ง€์ •ํ•˜๊ฑฐ๋‚˜, ์ดˆ๊ธฐ ์„ ์–ธ์„ ํ™•์žฅํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์—ด๊ฑฐํ˜• ๋ฌธ๋ฒ• ์›์‹œ ๊ฐ’(Raw Values)์ด ์—†๋Š” ์—ด๊ฑฐํ˜• enum CompassPoint { case north case south case east case west } //์ฝค๋งˆ(,)๋ฅผ ๊ตฌ๋ถ„ํ•ด ํ•œ์ค„๋กœ ์ •์˜ enum CompassPoint { case north, south, east, west } var directionToHead = CompassPoint.west var directionToHead: CompassPoint = .west /*CompassPoint๋กœ ํ•œ๋ฒˆ .. 2022. 2. 8.
๋ฐ˜์‘ํ˜•