์ ์ฒด ๊ธ384 [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. [ํ๋ก๊ทธ๋๋จธ์ค 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. ์ด์ 1 ยทยทยท 33 34 35 36 37 38 39 ยทยทยท 64 ๋ค์ ๋ฐ์ํ