λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

swift230

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 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] ν΄λ‘œμ € (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.
[Swift] νƒ€μž… μΊμŠ€νŒ… νƒ€μž… μΊμŠ€νŒ… (Type Casting) μΈμŠ€ν„΄μŠ€μ˜ "νƒ€μž…"을 ν™•μΈν•˜κ±°λ‚˜, ν•΄λ‹Ή μΈμŠ€ν„΄μŠ€λ₯Ό 슈퍼 ν΄λž˜μŠ€λ‚˜ ν•˜μœ„ 클래슀둜 μ·¨κΈ‰ν•˜λŠ” 방법 Swiftμ—μ„œ νƒ€μž… μΊμŠ€νŒ…μ€ "is"λ‚˜ "as" μ—°μ‚°μžλ‘œ κ΅¬ν˜„ νƒ€μž… μΊμŠ€νŒ…μ„ μ‚¬μš©ν•˜μ—¬ νƒ€μž…μ΄ ν”„λ‘œν† μ½œμ— μ ν•©ν•œμ§€ 여뢀도 확인 κ°€λŠ₯ is νƒ€μž…μ„ μ²΄ν¬ν•˜λŠ” μ—°μ‚°μž λŸ°νƒ€μž„ μ‹œμ μ— μ‹€μ œ 체크가 이루어짐 λ°˜ν™˜ 값은 Bool ν˜• ν‘œν˜„μ‹μ΄ Typeκ³Ό λ™μΌν•˜κ±°λ‚˜, ν‘œν˜„μ‹μ΄ Type의 μ„œλΈŒν΄λž˜μŠ€μΈ 경우 Trueλ₯Ό λ°˜ν™˜ 이 μ™Έμ—λŠ” False λ°˜ν™˜ //1 let char: Character = "A" char is Character // true char is String // false //2 class Animal { } class Dog: Animal { } let dog: Dog = ... 2023. 2. 6.
λ°˜μ‘ν˜•