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

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

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1] ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ฐ”๊พธ๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ชจ์Œ ๋ฌธ์ž์—ด์„ ์ •์ˆ˜๋กœ ๋ฐ”๊พธ๊ธฐ ๋ฌธ์ œ ์„ค๋ช… ๋ฌธ์ž์—ด s๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”. ์ œํ•œ ์‚ฌํ•ญ s์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 5์ดํ•˜์ž…๋‹ˆ๋‹ค. s์˜ ๋งจ์•ž์—๋Š” ๋ถ€ํ˜ธ(+, -)๊ฐ€ ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. s๋Š” ๋ถ€ํ˜ธ์™€ ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. s๋Š” "0"์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž…์ถœ๋ ฅ ์˜ˆ str์ด "1234"์ด๋ฉด 1234๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , "-1234"์ด๋ฉด -1234๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. str์€ ๋ถ€ํ˜ธ(+,-)์™€ ์ˆซ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ์ž˜๋ชป๋œ ๊ฐ’์ด ์ž…๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ œ์ถœ func solution(_ s:String) -> Int { return s == "-" ? 0 : Int(s)! } 2023. 2. 8.
[Swift] ์ ‘๊ทผ ์ œ์–ด (Access Control) ์ ‘๊ทผ ์ œ์–ด (Access Control) ํŠน์ • ์ฝ”๋“œ์˜ ์ ‘๊ทผ์„ ๋‹ค๋ฅธ ์†Œ์Šค ํŒŒ์ผ์ด๋‚˜ ๋ชจ๋“ˆ์—์„œ ์ œํ•œํ•˜๋Š” ๊ฒƒ ๋ชจ๋“ˆ๊ณผ ์†Œ์ŠคํŒŒ์ผ Swift์˜ ์ ‘๊ทผ ์ œ์–ด๋Š” ๋ชจ๋“ˆ๊ณผ ์†Œ์ŠคํŒŒ์ผ์— ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ์Œ ๋ชจ๋“ˆ์€ ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๋‹จ์ผ ๋‹จ์œ„๋กœ, ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ์•ฑ์ด ์ด ๋‹จ์œ„๋กœ ๋ฐฐํฌ๋˜๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ import ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Œ ์†Œ์ŠคํŒŒ์ผ์€ ๋ชจ๋“ˆ ์•ˆ์— ์žˆ๋Š” ์†Œ์ŠคํŒŒ์ผ์„ ์˜๋ฏธ ์ ‘๊ทผ ๋ ˆ๋ฒจ Swift์—์„œ๋Š” 5๊ฐœ์˜ ์ ‘๊ทผ ๋ ˆ๋ฒจ์„ ์ œ๊ณต Open ์„ ์–ธํ•œ ๋ชจ๋“ˆ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ Public ์„ ์–ธํ•œ ๋ชจ๋“ˆ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์˜ค๋ฒ„๋ผ์ด๋“œ์™€ ์„œ๋ธŒํด๋ž˜์‹ฑ์ด ๋ถˆ๊ฐ€๋Šฅ Internal Internal ๊ธฐ๋ณธ ์ ‘๊ทผ ๋ ˆ๋ฒจ File-Private ํŠน์ • ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์„ ์–ธํ•œ ํŒŒ์ผ ์•ˆ์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ Private Private.. 2023. 2. 7.
[Swift] ARC ARC (Automatic Reference Counting) ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ๋ฐฉ์‹ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์— ๊ฐœ๋ฐœ์ž๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ์„ ์“ธ ํ•„์š”๊ฐ€ ์—†์Œ ARC๋Š” ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ•ด์ œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ์ค‘, ํž™ ์˜์—ญ๊ณผ ๊ด€๋ จ ํž™ ์˜์—ญ์€ ์ฐธ์กฐ(Reference) ํ˜• ํƒ€์ž…์ธ ํด๋ž˜์Šค, ํด๋กœ์ € ๋“ฑ์ด ๋ณด๊ด€ ๊ฐ’(Value) ํƒ€์ž…์ธ ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜• ๋“ฑ์€ ๋ฉ”๋ชจ ๋ฆฌ ๊ด€๋ฆฌ ๋Œ€์ƒ์ด ์•„๋‹˜ ํž™ ์˜์—ญ์˜ ์ฐธ์กฐํ˜• ์ž๋ฃŒ๋“ค์ด ํ”„๋กœ๊ทธ๋žจ ์ƒ์—์„œ ์–ผ๋งˆ๋‚˜ ์ฐธ์กฐ๋˜๋Š”์ง€ ์ˆซ์ž๋ฅผ ์„ธ์–ด์„œ, ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€ ์ž๋™์œผ๋กœ ํ• ๋‹น ๋ฐ ์ œ๊ฑฐํ•˜๋„๋ก ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ ARC ๋™์ž‘ ARC๋Š” ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์˜€์„ ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ๋”์ด ์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์„ ๋•Œ, ARC๋Š” ํ•ด๋‹น ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œ.. 2023. 2. 7.
[Swift] ์ œ๋„ค๋ฆญ (Generic) ์ œ๋„ค๋ฆญ (Generic) ํƒ€์ž…์„ ํŒŒ๋ผ๋ฏธํ„ฐํ™” ํ•˜์—ฌ ์ปดํŒŒ์ผ ํƒ€์ž„์— ๊ตฌ์ฒด์ ์ธ ํƒ€์ž…์ด ๊ฒฐ์ •๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ ์ œ๋„ค๋ฆญ์„ ์ด์šฉํ•˜๋ฉด ํƒ€์ž…์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅ ์ œ๋„ค๋ฆญ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ๊ณผ ํƒ€์ž…์€ ์žฌ์‚ฌ์šฉ์— ์šฉ์ด ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ผ ์ˆ˜ ์žˆ์–ด์„œ ๊น”๋”ํ•œ ํ‘œํ˜„์ด ๊ฐ€๋Šฅ Swift์—์„œ์˜ ๋Œ€ํ‘œ์ ์ธ ์ œ๋„ค๋ฆญ ํƒ€์ž…์œผ๋กœ๋Š” Array์™€ Dictionary ํƒ€์ž…์ด Array์™€ Dictionary๋Š” Int ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ๊ณ , String ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ, ํƒ€์ž…์— ์ œํ•œ์ด ์—†์Œ // String ํƒ€์ž…์„ ๊ฐ–๋Š” ๋‘๊ฐœ์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ํ•จ์ˆ˜ func swapTwoStrings(_ a: inout String, _ b: inout String) { let temporaryA = a a = b b = temporaryA } // Double.. 2023. 2. 7.
[Swift] ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์—๋Ÿฌ ์ฒ˜๋ฆฌ (ErrorHandling) ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ทธ ์ƒํ™ฉ์— ๋Œ€ํ•ด ๋Œ€์‘ํ•˜๊ณ , ์ด๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ๊ณผ์ • Swift์—์„œ๋Š” ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์—๋Ÿฌ์˜ ๋ฐœ์ƒ(throw ing), ๊ฐ์ง€(catching), ์ „ํŒŒ(propagating), ์กฐ์ž‘(manipulating)์„ ์ง€์›ํ•˜๋Š” ์ผ๊ธ‰ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณต ์—๋Ÿฌ์˜ ํ‘œ์‹œ์™€ ๋ฐœ์ƒ (Representing and Throwing Errors) Swift์—์„œ ์—๋Ÿฌ๋Š” Error ํ”„๋กœํ† ์ฝœ์„ ๋”ฐ๋ฅด๋Š” ํƒ€์ž…์˜ ๊ฐ’์œผ๋กœ ํ‘œํ˜„ Error ํ”„๋กœํ† ์ฝœ์€ ๋น„์–ด์žˆ์œผ๋ฉฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ์— ํƒ€์ž…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ„ enum ServerError: Error { case forbidden case notFound case internalError case unauthori.. 2023. 2. 7.
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1] ์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜? ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV.1 ๋ชจ์Œ ์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜? ๋ฌธ์ œ ์„ค๋ช… ๊ธธ์ด๊ฐ€ n์ด๊ณ , "์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜...."์™€ ๊ฐ™์€ ํŒจํ„ด์„ ์œ ์ง€ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด n์ด 4์ด๋ฉด "์ˆ˜๋ฐ•์ˆ˜๋ฐ•"์„ ๋ฆฌํ„ดํ•˜๊ณ  3์ด๋ผ๋ฉด "์ˆ˜๋ฐ•์ˆ˜"๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ œํ•œ ์‚ฌํ•ญ n์€ ๊ธธ์ด 10,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ž…์ถœ๋ ฅ ์˜ˆ n return 3 "์ˆ˜๋ฐ•์ˆ˜" 4 "์ˆ˜๋ฐ•์ˆ˜๋ฐ•" ์ œ์ถœ func solution(_ n:Int) -> String { var re = "" for i in 1...n{ if i % 2 == 1{ re += "์ˆ˜" } else{ re += "๋ฐ•" } } return re } 1๋ถ€ํ„ฐ n๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์‹คํ–‰ํ•˜์—ฌ, ํ™€์ˆ˜๋ผ๋ฉด "์ˆ˜" ์ง์ˆ˜๋ผ๋ฉด "๋ฐ•"์„ re ๋ณ€์ˆ˜์— ์ถ”๊ฐ€ํ•œ๋‹ค. ๋‹ค๋ฅธ ํ’€์ด func.. 2023. 2. 7.
๋ฐ˜์‘ํ˜•