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

์ „์ฒด ๊ธ€384

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programming) ์ปดํ“จํ„ฐ๋ฅผ ํ™œ์šฉํ•ด๋„ ์–ด๋ ค์šด ๋ฌธ์ œ ์ตœ์ ์˜ ํ•ด๋ฅผ ๊ตฌํ•˜๊ธฐ์— ์‹œ๊ฐ„์ด ๋งค์šฐ ๋งŽ์ด ํ•„์š”ํ•œ ๋ฌธ์ œ ์ตœ์ ์˜ ํ•ด๋ฅผ ๊ตฌํ•˜๊ธฐ์— ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋งค์šฐ ๋งŽ์ด ํ•„์š”ํ•œ ๋ฌธ์ œ ์ปดํ“จํ„ฐ๋Š” ์—ฐ์‚ฐ ์†๋„์— ํ•œ๊ณ„๊ฐ€ ์žˆ๊ณ , ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋„ ํ•œ์ •์ ์ด๋ผ ๋งŽ์€ ์ œ์•ฝ ๋ฐœ์ƒ โ˜ž ์—ฐ์‚ฐ ์†๋„์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ตœ๋Œ€ํ•œ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž‘์„ฑ ํ•„์š” ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programming) ๋™์  ๊ณ„ํš๋ฒ• ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘๊ฒŒ ๋‚˜๋ˆ„๊ณ , ๊ฐ™์€ ๋ฌธ์ œ๋ผ๋ฉด ํ•œ ๋ฒˆ์”ฉ๋งŒ ํ’€์–ด ๋ฌธ์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฒ• ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์•ฝ๊ฐ„ ๋” ์‚ฌ์šฉํ•˜๋ฉด ์—ฐ์‚ฐ ์†๋„๋ฅผ ๋น„์•ฝ์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ์ž‘์€ ๋ฌธ์ œ์—์„œ ๊ตฌํ•œ ์ •๋‹ต์€ ๊ทธ๊ฒƒ์„ .. 2022. 3. 30.
[UIKit] UIView(2) View ์ƒ์„ฑํ•˜๊ธฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์Šคํ† ๋ฆฌ๋ณด๋“œ์— ๋ทฐ๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋ถ€ํ„ฐ ์บ”๋ฒ„์Šค์— ๋Œ์–ด๋‹ค ๋†“์•„์„œ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ๋„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฏธ๋ž˜์˜ super ๋ทฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ดˆ๊ธฐ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋Š” ๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  super ๋ทฐ์˜ ์ขŒํ‘œ๊ณ„์— ์žˆ๋Š” ์ (10, 10)์— ์™ผ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ๋ฅผ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. let rect = CGRect(x: 10, y: 10, width: 100, height: 100) let myView = UIView(frame: rect) ๋‹ค๋ฅธ ๋ทฐ์— ํ•˜์œ„ ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด super ๋ทฐ์—์„œ addSubView(_:) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์„ธ์š”. ๋ทฐ์— ํ•˜์œ„ ๋ทฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ iOS์—์„œ๋Š” ํ˜•์ œ ๋ทฐ๊ฐ€ ์„œ๋กœ ๊ฒน์ณ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. addS.. 2022. 3. 28.
[UIKit] UIView(1) View๋Š” ์•ฑ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์ด๋ฉฐ UIView ํด๋ž˜์Šค๋Š” ๋ชจ๋“  view์— ๊ณตํ†ต์ ์ธ ๋™์ž‘์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. view ๊ฐ์ฒด๋Š” ์‚ฌ๊ฐํ˜• ๋‚ด์—์„œ ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•˜๊ณ  ํ•ด๋‹น ์ฝ˜ํ…์ธ ์™€์˜ ๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. UIView ํด๋ž˜์Šค๋Š” ์ธ์Šคํ„ด์Šคํ™”ํ•˜๊ณ  ๊ณ ์ •๋œ ๋ฐฐ๊ฒฝ์ƒ‰์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์ƒ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ๋” ์ •๊ตํ•œ ์ปจํ…์ธ ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ ์„œ๋ธŒํด๋ž˜์Šคํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ฑ์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” label, image, button ๋ฐ ๊ธฐํƒ€ ์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ์ง์ ‘ ์ •์˜ํ•˜๊ธฐ๋ณด๋‹ค๋Š” UIKit ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ทฐ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. view ๊ฐ์ฒด๋Š” ์•ฑ์ด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ์ฃผ๋œ ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ฑ…์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ธฐ์™€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ทฐ๋Š” UI.. 2022. 3. 25.
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ด์ง„ ํƒ์ƒ‰(Binary Search) ์ˆœ์ฐจ ํƒ์ƒ‰(Sequential Search) ๋ฆฌ์ŠคํŠธ ์•ˆ์— ์žˆ๋Š” ํŠน์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ์•ž์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• ์ •๋ ฌ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๊ฐ€์žฅ ์•ž์—์„œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ™•์ธ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฆฌ์ŠคํŠธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ ๋ฆฌ์ŠคํŠธ ๋‚ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋ฌด๋ฆฌ ๋งŽ์•„๋„ ์‹œ๊ฐ„๋งŒ ์ถฉ๋ถ„ํ•˜๋‹ค๋ฉด ํ•ญ์ƒ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ ์‹œ๊ฐ„ ๋ณต์žก๋„ → O(N) ์ด์ง„ ํƒ์ƒ‰(Binary Search) ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์”ฉ ์ขํ˜€๊ฐ€๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ ์ฐพ์œผ๋ ค๋Š” ๋ฐ์ดํ„ฐ์™€ ์ค‘๊ฐ„์  ์œ„์น˜์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋น„๊ตํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ์ƒ‰ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์‹œ์ž‘์ , ๋์ , ์ค‘๊ฐ„์  3๊ฐœ์˜ ๋ณ€์ˆ˜ ์‚ฌ์šฉ ๋ฐฐ์—ด ๋‚ด๋ถ€์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์‹œ๊ฐ„ ๋ณต์žก๋„ → O(logN) ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ ๋”๋ณด๊ธฐ ํŠธ๋ฆฌ(Tree) ๊ตฌ์กฐ ๋…ธ๋“œ์™€ ๋…ธ๋“œ์˜ ์—ฐ.. 2022. 3. 25.
[UIKit] UIApplication UIApplication iOS์—์„œ ์‹คํ–‰๋˜๋Š” ์•ฑ์˜ ์ œ์–ด์™€ ์กฐ์ •์˜ ์ค‘์‹ฌ์  ์„ ์–ธ @MainActor class UIApplication : UIResponder ๋ชจ๋“  iOS ์•ฑ์—๋Š” ๋‹จ ํ•˜๋‚˜์˜ UIApplication ์ธ์Šคํ„ด์Šค๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์ด ์‹œ์ž‘๋˜๋ฉด ์‹œ์Šคํ…œ์€ UIApplicationMain(_: _: _: _:) ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” UIApplication ๊ฐ์ฒด์˜ ์‹ฑ๊ธ€ํ„ด์„ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ shared ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด ์‹ฑ๊ธ€ํ„ด ๊ฐ์ฒด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. application ๊ฐ์ฒด์˜ ์ฃผ์š” ์—ญํ• ์€ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ๋กœ๋ถ€ํ„ฐ์˜ ์ดˆ๊ธฐ ๋ผ์šฐํŒ…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. application ๊ฐ์ฒด๋Š” UIControl ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ธ control๊ฐ์ฒด๊ฐ€ ์ „๋‹ฌํ•œ action ๋ฉ”์‹œ์ง€๋ฅผ target.. 2022. 3. 24.
[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ(Sorting) ์ •๋ ฌ(Sorting) ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์„ ํƒ ์ •๋ ฌ(Selection Sort) ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์„ ํƒํ•ด ๋งจ ์•ž์œผ๋กœ ๋ณด๋‚ธ๋‹ค. ๋‹ค๋ฅธ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์— ๋น„ํ•ด ๋น„ํšจ์œจ์ ์ด๋‹ค. → ์‹œ๊ฐ„ ๋ณต์žก๋„: O(N^2) ์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort) ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‹ˆ์”ฉ ํ™•์ธํ•˜๋ฉฐ, ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์ •๋ ฌ๋˜์–ด ์žˆ์„ ๋•Œ ํšจ์œจ์ ์ด๋‹ค. → ์‹œ๊ฐ„ ๋ณต์žก๋„: O(N^2) ํ€ต ์ •๋ ฌ(Quick Sort) ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ค์ •ํ•˜๊ณ , ๊ทธ ๊ธฐ์ค€๋ณด๋‹ค ํฐ ๋ฐ์ดํ„ฐ์™€ ์ž‘์€ ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พผ๋‹ค. ํ”ผ๋ฒ—(Pivot): ๊ธฐ์ค€ ๋ฐ์ดํ„ฐ → ํ‰๊ท  ์‹œ๊ฐ„ ๋ณต์žก๋„: O(NlogN) ๊ณ„์ˆ˜ ์ •๋ ฌ(Count Sort) ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ ๊ฐ€์žฅ ํฐ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ชจ๋‘ ๋‹ด๊ธธ .. 2022. 3. 24.
๋ฐ˜์‘ํ˜•