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

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ381

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1] ์†Œ์ˆ˜ ์ฐพ๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ชจ์Œ ์†Œ์ˆ˜ ์ฐพ๊ธฐ ๋ฌธ์ œ ์„ค๋ช… 1๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ์ˆซ์ž n ์‚ฌ์ด์— ์žˆ๋Š” ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”. ์†Œ์ˆ˜๋Š” 1๊ณผ ์ž๊ธฐ ์ž์‹ ์œผ๋กœ๋งŒ ๋‚˜๋ˆ„์–ด์ง€๋Š” ์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. (1์€ ์†Œ์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.) ์ œํ•œ ์‚ฌํ•ญ n์€ 2 ์ด์ƒ 1000000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž…์ถœ๋ ฅ ์˜ˆ n result 10 4 5 3 ์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช… ์ž…์ถœ๋ ฅ ์˜ˆ #1 1๋ถ€ํ„ฐ 10 ์‚ฌ์ด์˜ ์†Œ์ˆ˜๋Š” [2,3,5,7] 4๊ฐœ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ 4๋ฅผ ๋ฐ˜ํ™˜ ์ž…์ถœ๋ ฅ ์˜ˆ #2 1๋ถ€ํ„ฐ 5 ์‚ฌ์ด์˜ ์†Œ์ˆ˜๋Š” [2,3,5] 3๊ฐœ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ 3์„ ๋ฐ˜ํ™˜ ์ œ์ถœ import Foundation func solution(_ n:Int) -> Int { var isPrime = true var count = 0 for i in 2...n { .. 2023. 2. 7.
[Swift] ๊ณ ์ฐจํ•จ์ˆ˜ ๊ณ ์ฐจํ•จ์ˆ˜ ๊ณ ์ฐจํ•จ์ˆ˜๋Š” ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ์ธ์ž๋กœ ๋ฐ›๊ฑฐ๋‚˜ ํ•จ์ˆ˜์‹คํ–‰์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•จ์ˆ˜๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ swift์˜ ํ•จ์ˆ˜(ํด๋กœ์ €)๋Š” ์ผ๊ธ‰์‹œ๋ฏผ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ž๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•จ์ˆ˜์˜ ๊ฒฐ๊ด๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ ์ผ๊ธ‰๊ฐ์ฒด (First Class Citizen) ๊ฐ์ฒด๊ฐ€ ๋Ÿฐํƒ€์ž„์—๋„ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฐ์ฒด๋ฅผ ์ธ์ž ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์•ˆ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. map ๊ธฐ์กด์˜ ์ปจํ…Œ์ด๋„ˆ์˜ ์š”์†Œ์— ๋Œ€ํ•ด ์ •์˜ํ•œ ํด๋กœ์ €๋กœ ๋งคํ•‘ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐ˜ํ™˜ //For๋ฌธ ์‚ฌ์šฉ let numArray = [1,2, 3, 4, 5, 6, 7, 8, 9] var multiplyArray = [Int]() for num in numArray{ multiplyA.. 2023. 2. 6.
[Swift] ํด๋กœ์ € (Closure) ํด๋กœ์ € (Closure) ์‚ฌ์šฉ์ž์˜ ์ฝ”๋“œ ์•ˆ์—์„œ ์ „๋‹ฌ๋˜์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ์ง์„ ๊ฐ€์ง„ ์ค‘๊ด„ํ˜ธ"{}" ๊ตฌ๋ถ„๋œ ์ฝ”๋“œ์˜ ๋ธ”๋ก ์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜ ํด๋กœ์ €๋Š” ์–ด๋– ํ•œ ์ƒ์ˆ˜๋‚˜ ๋ณ€์ˆ˜์˜ ์ฐธ์กฐ๋ฅผ ์บก์ฒ˜(capture)ํ•ด์„œ ์ €์žฅ ๊ฐ€๋Šฅ Swift๋Š” ์ด ์บก์ฒ˜์™€ ๊ด€๋ จํ•œ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์•Œ์•„์„œ ์ฒ˜๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ๋ฐ˜ํ™˜ ๊ฐ’์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ํ•จ์ˆ˜์™€ ๋™์ผ Swift ํด๋กœ์ €๋Š” ์ตœ์ ํ™”๋ฅผ ํ†ตํ•ด ๊น”๋”ํ•˜๊ณ  ๋ช…ํ™•ํ•œ ์Šคํƒ€์ผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ ๋ฌธ๋งฅ(context)์—์„œ ์ธ์ž ํƒ€์ž…๊ณผ ๋ฐ˜ํ™˜ ํƒ€์ž…์˜ ์ถ”๋ก  ๋‹จ์ผ ํ‘œํ˜„์‹ ํด๋กœ์ €์˜ ์•”์‹œ์  ๋ฐ˜ํ™˜ ์ถ•์•ฝ๋œ ์ธ์ž ์ด๋ฆ„ ํ›„์œ„ ํด๋กœ์ € ๋ฌธ๋ฒ• { (๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„ : ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…) -> ๋ฐ˜ํ™˜ํƒ€์ž… in ํด๋กœ์ € ํ‘œํ˜„์‹ ์ฝ”๋“œ } ํ›„ํ–‰ ํด๋กœ์ € (trailing closure) ํด๋กœ์ €๊ฐ€ ํ•จ์ˆ˜์˜ ๋งˆ์ง€๋ง‰ argument๋ผ๋ฉด, .. 2023. 2. 6.
[Swift] ์ต์Šคํ…์…˜ (Extensions) ์ต์Šคํ…์…˜ (Extensions) ์ต์Šคํ…์…˜์„ ์ด์šฉํ•ด ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ํ˜น์€ ํ”„๋กœํ† ์ฝœ ํƒ€์ž…์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ ์ต์Šคํ…์…˜์€ ํƒ€์ž…์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜ค๋ฒ„๋ผ์ด๋“œ๋Š” ํ•  ์ˆ˜ ์—†์Œ ๊ณ„์‚ฐ๋œ ์ธ์Šคํ„ด์Šค ์†์„ฑ ๋ฐ ๊ณ„์‚ฐ ์œ ํ˜• ์†์„ฑ ์ถ”๊ฐ€ ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ ๋ฐ ํƒ€์ž… ๋ฉ”์„œ๋“œ ์ •์˜ ์ƒˆ ์ด๋‹ˆ์…œ๋ผ์ด์ € ์ œ๊ณต Subscript ์ •์˜ ์ƒˆ ์ค‘์ฒฉ ํƒ€์ž… ์ •์˜ ๋ฐ ์‚ฌ์šฉ ๊ธฐ์กด ํƒ€์ž…์„ ํ”„๋กœํ† ์ฝœ์— ๋งž๊ฒŒ ์„ค์ • extension Int { var add: Int { return self + 100 } var sub: Int { return self - 10 } var mul: Int { return self * 10 } var div: Int { return self / 5 } } let addition = 3.add print("Ad.. 2023. 2. 6.
[Swift] ํ”„๋กœํ† ์ฝœ (Protocol) ํ”„๋กœํ† ์ฝœ (Protocol) ํŠน์ • ์ž‘์—…์ด๋‚˜ ๊ธฐ๋Šฅ์— ์ ํ•ฉํ•œ ๋ฉ”์„œ๋“œ, ํ”„๋กœํผํ‹ฐ ๋ฐ ๊ธฐํƒ€ ์š”๊ตฌ์‚ฌํ•ญ์˜ ‘์•ฝ์†’์„ ์ •์˜ ํด๋ž˜์Šค(class), ๊ตฌ์กฐ์ฒด(struct), ์—ด๊ฑฐํ˜•(enum)์—์„œ๋Š” ์–ด๋– ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜์—ฌ ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ ํ”„๋กœํ† ์ฝœ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œํ‚ค๋Š” ๋ชจ๋“  ํƒ€์ž…์€ ํ•ด๋‹น ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•œ๋‹ค ํ˜น์€ ๋”ฐ๋ฅธ๋‹ค๊ณ  ํ•จ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„์šฉํ•œ ํ˜•์‹์€ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜๋“œ์‹œ ๋ชจ๋‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ ํ”„๋กœํ† ์ฝœ์€ ํ”„๋กœํ† ์ฝœ ๊ฐ„ ์ƒ์†์„ ์ง€์›ํ•˜๋ฉฐ, ํด๋ž˜์Šค์™€ ๋‹ฌ๋ฆฌ ๋‹ค์ค‘ ์ƒ์†๋„ ์ง€์› ํ”„๋กœํ† ์ฝœ ์ฑ„ํƒํ•˜๊ธฐ ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์—์„œ ์ •์˜ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฝœ๋ก (:)์„ ์‚ฌ์šฉ ํ•˜๋‚˜์˜ ํƒ€์ž…์—์„œ ๋‹ค์ˆ˜์˜ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฝค๋งˆ(,)๋ฅผ ์‚ฌ์šฉ ํด๋ž˜์Šค์—์„œ ์ƒ์†๊ณผ ํ”„๋กœํ† ์ฝœ ์ฑ„ํƒ์„ ๋™์‹œ์— ํ•˜๋ ค๋ฉด ์ƒ์†๋ฐ›์œผ๋ ค๋Š” ํด๋ž˜์Šค๋ฅผ .. 2023. 2. 6.
[Swift] assert์™€ guard assert ํŠน์ • ์กฐ๊ฑด์„ ์ฒดํฌํ•˜๊ณ , ์กฐ๊ฑด์ด ์„ฑ๋ฆฝ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ํ•จ์ˆ˜ assert ํ•จ์ˆ˜๋Š” ๋””๋ฒ„๊น… ๋ชจ๋“œ์—์„œ๋งŒ ๋™์ž‘ํ•˜๊ณ  ์ฃผ๋กœ ๋””๋ฒ„๊น… ์ค‘ ์กฐ๊ฑด์˜ ๊ฒ€์ฆ์„ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ var value = 0 assert(value == 0) value = 2 assert(value == 0, "๊ฐ’์ด 0์ด ์•„๋‹™๋‹ˆ๋‹ค.") ์ฒซ ๋ฒˆ์งธ assert๋Š” ์ฐธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ ๋‘ ๋ฒˆ์งธ assert๋Š” ๊ฑฐ์ง“์ด๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ Assertion failed: ๊ฐ’์ด 0์ด ์•„๋‹™๋‹ˆ๋‹ค. guard ๋ฌธ ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•˜์—ฌ ๊ทธ๋‹ค์Œ์— ์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ• ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ตฌ๋ฌธ guard์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์ด ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์„ ์‹œ ํŠน์ • ์‹คํ–‰ ๊ตฌ๋ฌธ์„ ๋น ๋ฅด๊ฒŒ ์ข…๋ฃŒ guard์˜ else ๋ธ”๋ก ๋‚ด๋ถ€์—๋Š” ํŠน์ • ์ฝ”๋“œ ๋ธ”๋ก์„ ์ข…๋ฃŒํ•˜๋Š” .. 2023. 2. 6.
๋ฐ˜์‘ํ˜•