From fd6cc91ad5770617ead760b4dceafbc0b2a95bbd Mon Sep 17 00:00:00 2001 From: yeseul jang Date: Tue, 6 Jan 2026 16:53:11 +0900 Subject: [PATCH 01/17] =?UTF-8?q?feat:=20=EC=B2=AB=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YSBasicAssignments | 1 + 1 file changed, 1 insertion(+) create mode 160000 YSBasicAssignments diff --git a/YSBasicAssignments b/YSBasicAssignments new file mode 160000 index 0000000..be3e208 --- /dev/null +++ b/YSBasicAssignments @@ -0,0 +1 @@ +Subproject commit be3e208f11b1a88394995a5e31729067eece81e2 From 4d0727ede47c7524d131542dcea5a06153a41ad4 Mon Sep 17 00:00:00 2001 From: yeseul jang Date: Tue, 6 Jan 2026 16:59:01 +0900 Subject: [PATCH 02/17] =?UTF-8?q?choir:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YSBasicAssignments | 1 - 1 file changed, 1 deletion(-) delete mode 160000 YSBasicAssignments diff --git a/YSBasicAssignments b/YSBasicAssignments deleted file mode 160000 index be3e208..0000000 --- a/YSBasicAssignments +++ /dev/null @@ -1 +0,0 @@ -Subproject commit be3e208f11b1a88394995a5e31729067eece81e2 From a319478bc3c00ccee30f3d6b125e1844e7b8fe41 Mon Sep 17 00:00:00 2001 From: yeseul jang Date: Tue, 6 Jan 2026 16:59:55 +0900 Subject: [PATCH 03/17] =?UTF-8?q?feat:=20=EA=B3=BC=EC=A0=9C=201=EB=B2=88,?= =?UTF-8?q?=202=EB=B2=88=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BasicAssignments.xcodeproj/project.pbxproj | 294 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 20088 bytes .../xcschemes/xcschememanagement.plist | 14 + BasicAssignments/main.swift | 71 +++++ 5 files changed, 386 insertions(+) create mode 100644 BasicAssignments.xcodeproj/project.pbxproj create mode 100644 BasicAssignments.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 BasicAssignments.xcodeproj/xcuserdata/yeseuljang.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 BasicAssignments/main.swift diff --git a/BasicAssignments.xcodeproj/project.pbxproj b/BasicAssignments.xcodeproj/project.pbxproj new file mode 100644 index 0000000..196cb8c --- /dev/null +++ b/BasicAssignments.xcodeproj/project.pbxproj @@ -0,0 +1,294 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 77; + objects = { + +/* Begin PBXCopyFilesBuildPhase section */ + 0A0FBAB42F0CAC0C00236387 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0A0FBAB62F0CAC0C00236387 /* BasicAssignments */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = BasicAssignments; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + 0A0FBAB82F0CAC0C00236387 /* BasicAssignments */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = BasicAssignments; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0A0FBAB32F0CAC0C00236387 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0A0FBAAD2F0CAC0C00236387 = { + isa = PBXGroup; + children = ( + 0A0FBAB82F0CAC0C00236387 /* BasicAssignments */, + 0A0FBAB72F0CAC0C00236387 /* Products */, + ); + sourceTree = ""; + }; + 0A0FBAB72F0CAC0C00236387 /* Products */ = { + isa = PBXGroup; + children = ( + 0A0FBAB62F0CAC0C00236387 /* BasicAssignments */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0A0FBAB52F0CAC0C00236387 /* BasicAssignments */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0A0FBABD2F0CAC0C00236387 /* Build configuration list for PBXNativeTarget "BasicAssignments" */; + buildPhases = ( + 0A0FBAB22F0CAC0C00236387 /* Sources */, + 0A0FBAB32F0CAC0C00236387 /* Frameworks */, + 0A0FBAB42F0CAC0C00236387 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + 0A0FBAB82F0CAC0C00236387 /* BasicAssignments */, + ); + name = BasicAssignments; + packageProductDependencies = ( + ); + productName = BasicAssignments; + productReference = 0A0FBAB62F0CAC0C00236387 /* BasicAssignments */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0A0FBAAE2F0CAC0C00236387 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 2620; + LastUpgradeCheck = 2620; + TargetAttributes = { + 0A0FBAB52F0CAC0C00236387 = { + CreatedOnToolsVersion = 26.2; + }; + }; + }; + buildConfigurationList = 0A0FBAB12F0CAC0C00236387 /* Build configuration list for PBXProject "BasicAssignments" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 0A0FBAAD2F0CAC0C00236387; + minimizedProjectReferenceProxies = 1; + preferredProjectObjectVersion = 77; + productRefGroup = 0A0FBAB72F0CAC0C00236387 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 0A0FBAB52F0CAC0C00236387 /* BasicAssignments */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 0A0FBAB22F0CAC0C00236387 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 0A0FBABB2F0CAC0C00236387 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 26.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 0A0FBABC2F0CAC0C00236387 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 26.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + }; + name = Release; + }; + 0A0FBABE2F0CAC0C00236387 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 0A0FBABF2F0CAC0C00236387 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0A0FBAB12F0CAC0C00236387 /* Build configuration list for PBXProject "BasicAssignments" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0A0FBABB2F0CAC0C00236387 /* Debug */, + 0A0FBABC2F0CAC0C00236387 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0A0FBABD2F0CAC0C00236387 /* Build configuration list for PBXNativeTarget "BasicAssignments" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0A0FBABE2F0CAC0C00236387 /* Debug */, + 0A0FBABF2F0CAC0C00236387 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0A0FBAAE2F0CAC0C00236387 /* Project object */; +} diff --git a/BasicAssignments.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/BasicAssignments.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/BasicAssignments.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate b/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..16a06f3c0666218fd879649b98213ce02971b224 GIT binary patch literal 20088 zcmeHv2Ut^Q+wk+8fkGGw+Ym!ovLPWMA?$>qD60hAng)m%4TL5^#rYho)~ao_t<`P; zwbk0%Wv!js@!DluSMA<*Z@b&K{qJ)QK_c4s?f-q>`(4+6{UYR?=iJY8-_N-BebU

fwz=EpI^eE3+3V__n(S(wXK(X*!VzAx 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 + + + + SchemeUserState + + BasicAssignments.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/BasicAssignments/main.swift b/BasicAssignments/main.swift new file mode 100644 index 0000000..83c35d3 --- /dev/null +++ b/BasicAssignments/main.swift @@ -0,0 +1,71 @@ +// +// main.swift +// BasicAssignments +// +// Created by Yeseul Jang on 1/6/26. +// + +import Foundation + +// 필수 문제 1-------------------------------------------------------------------------- + +//두 개의 Int 값을 파라미터로 받고, 하나의 String 값을 반환하는 클로저를 설계해주세요. +// {(num1: Int, num2: Int) -> String in return "두 수의 합은 \(num1 + num2) 입니다"} + + +// 이 클로저를 상수 sum에 저장하고, 정확한 타입을 명시해주세요 +let sum: (Int, Int) -> String = { "두 수의 합은 \($0 + $1) 입니다" } + + +//sum을 호출하는 코드를 작성해주세요. (파라미터로 전달하는 값은 임의로 선택) +print(sum(1,3)) + + +//위에서 정의한 sum과 동일한 타입의 클로저를 파라미터로 받고, 반환 값이 없는(void) 함수 calculate를 작성해주세요. +func calculate(_ sum: (Int, Int) -> String, num1: Int, num2: Int,) { + print(sum(num1, num2)) +} + +calculate(sum, num1: 5, num2: 25) + + + + + +// 필수 문제 2------------------------------------------------------------------------ + +//아래 for-in 문을 map 을 사용하는 코드로 변환해주세요. +let numbers = [1, 2, 3, 4, 5] +var result = [String]() + +result = numbers.map { "\($0)" } + +print(result) + + + +//주어진 입력값을 고차함수를 체이닝하여 주어진 출력값이 나오도록 구현해주세요. +let oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +let resultArr = oneToTen.filter { $0 % 2 == 0 }.map { "\($0)" } + +print(resultArr) + + + +//이제 고차함수를 직접 만들어 봅니다. +func myMap(_ IntArr: [Int], _ change: (Int) -> String) -> [String] { + var result: [String] = [] + for num in IntArr { + result.append(change(num)) + } + return result +} + +let newArr = myMap([1, 2, 3, 4, 5]) { String($0) } +print(newArr) + + +// 필수 문제 3--------------------------------------------------------------------------- + +// Int 배열의 짝수번째 요소를 제거해서 반환하는 함수 a 를 작성해주세요. + From 27252d4129870b605bf3f66b34d977ef5f65ce59 Mon Sep 17 00:00:00 2001 From: yy-ss99 <124860690+yy-ss99@users.noreply.github.com> Date: Tue, 6 Jan 2026 19:46:25 +0900 Subject: [PATCH 04/17] =?UTF-8?q?feat:=20=EC=BD=94=EB=93=9C=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20=ED=9B=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bambu --- BasicAssignments/main.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BasicAssignments/main.swift b/BasicAssignments/main.swift index 83c35d3..59e5a1f 100644 --- a/BasicAssignments/main.swift +++ b/BasicAssignments/main.swift @@ -22,7 +22,7 @@ print(sum(1,3)) //위에서 정의한 sum과 동일한 타입의 클로저를 파라미터로 받고, 반환 값이 없는(void) 함수 calculate를 작성해주세요. -func calculate(_ sum: (Int, Int) -> String, num1: Int, num2: Int,) { +func calculate(num1: Int, num2: Int, _ sum: (Int, Int) -> String) { print(sum(num1, num2)) } From 7b57acea69569f97d99c62e93712ae8b796efc6c Mon Sep 17 00:00:00 2001 From: yeseul jang Date: Wed, 7 Jan 2026 17:56:17 +0900 Subject: [PATCH 05/17] =?UTF-8?q?feat:=20=ED=95=84=EC=88=98=EA=B3=BC?= =?UTF-8?q?=EC=A0=9C=203=EB=B2=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 20088 -> 22238 bytes BasicAssignments/main.swift | 61 +++++++++++++++++- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate b/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate index 16a06f3c0666218fd879649b98213ce02971b224..e075f873cb6cdf196d47aa587e7a4639068dc52f 100644 GIT binary patch delta 11565 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 XeCD|6VcZB~?_JpFy|?^r9rXVId>Ov& diff --git a/BasicAssignments/main.swift b/BasicAssignments/main.swift index 59e5a1f..c2497f3 100644 --- a/BasicAssignments/main.swift +++ b/BasicAssignments/main.swift @@ -26,7 +26,7 @@ func calculate(num1: Int, num2: Int, _ sum: (Int, Int) -> String) { print(sum(num1, num2)) } -calculate(sum, num1: 5, num2: 25) +calculate(num1: 5, num2: 25, sum) @@ -65,7 +65,64 @@ let newArr = myMap([1, 2, 3, 4, 5]) { String($0) } print(newArr) -// 필수 문제 3--------------------------------------------------------------------------- + +// 필수 문제 3--------------------------------------------------------------------------- // Int 배열의 짝수번째 요소를 제거해서 반환하는 함수 a 를 작성해주세요. +func a(_ array: [Int]) -> [Int] { + var result = [Int]() + for i in 0.. [String] { + var result = [String]() + for i in 0..(_ array: [T]) -> [T] { + var result = [T]() + for i in 0..(_ array: [T]) -> [T] { + var result = [T]() + for i in 0.. Date: Thu, 8 Jan 2026 09:24:14 +0900 Subject: [PATCH 06/17] Create README.md --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..1b0f377 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +## CH 2. 프로그래밍 기초 주차 과제 From 513e2e02836feb6e41c3ed206ecefb8294b5eaba Mon Sep 17 00:00:00 2001 From: yeseul jang Date: Fri, 9 Jan 2026 09:43:33 +0900 Subject: [PATCH 07/17] =?UTF-8?q?feat:=20=ED=95=84=EC=88=98=EA=B3=BC?= =?UTF-8?q?=EC=A0=9C=204,=205=EB=B2=88=20=EB=AC=B8=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 22238 -> 31072 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 ++ BasicAssignments/main.swift | 60 ++++++++++++++++-- BasicAssignments/mission4.swift | 59 +++++++++++++++++ BasicAssignments/mission5.swift | 32 ++++++++++ 5 files changed, 153 insertions(+), 4 deletions(-) create mode 100644 BasicAssignments.xcodeproj/xcuserdata/yeseuljang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 BasicAssignments/mission4.swift create mode 100644 BasicAssignments/mission5.swift diff --git a/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate b/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate index e075f873cb6cdf196d47aa587e7a4639068dc52f..456d92e0662903bbbc01dc3cc66310260525c732 100644 GIT binary patch literal 31072 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 D_rr+d delta 10759 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 P;a3vS@Z0z|cl`eVp`6(Q diff --git a/BasicAssignments.xcodeproj/xcuserdata/yeseuljang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/BasicAssignments.xcodeproj/xcuserdata/yeseuljang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..9c68bb3 --- /dev/null +++ b/BasicAssignments.xcodeproj/xcuserdata/yeseuljang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/BasicAssignments/main.swift b/BasicAssignments/main.swift index c2497f3..408fa11 100644 --- a/BasicAssignments/main.swift +++ b/BasicAssignments/main.swift @@ -6,7 +6,7 @@ // import Foundation - +print("--------필수문제 1-------------------") // 필수 문제 1-------------------------------------------------------------------------- //두 개의 Int 값을 파라미터로 받고, 하나의 String 값을 반환하는 클로저를 설계해주세요. @@ -31,7 +31,7 @@ calculate(num1: 5, num2: 25, sum) - +print("--------필수문제 2-------------------") // 필수 문제 2------------------------------------------------------------------------ //아래 for-in 문을 map 을 사용하는 코드로 변환해주세요. @@ -39,7 +39,6 @@ let numbers = [1, 2, 3, 4, 5] var result = [String]() result = numbers.map { "\($0)" } - print(result) @@ -66,7 +65,7 @@ print(newArr) - +print("--------필수문제 3-------------------") // 필수 문제 3--------------------------------------------------------------------------- // Int 배열의 짝수번째 요소를 제거해서 반환하는 함수 a 를 작성해주세요. func a(_ array: [Int]) -> [Int] { @@ -113,6 +112,7 @@ print(StringArray2, IntArray2) //함수 c 를 기반으로 수정하여 함수 d 를 작성해주세요. +//파라미터의 타입을 << 'Numeric 프로토콜'을 준수하는 타입의 요소를 가진 배열 >> 로 변경합니다. func d(_ array: [T]) -> [T] { var result = [T]() for i in 0..(_ array: [T]) -> [T] { let IntArray3 = d([1, 2, 3, 4, 5]) print(IntArray3) + +print("--------필수문제 4-------------------") +// 필수 문제 4--------------------------------------------------------------------------- +// 타입 정의는 mission4에 있습니다. +//[Introducible] 타입 배열을 정의하고, Robot, Cat, Dog 인스턴스 1개씩을 append 해주세요. +var introducibleArray = [Introducible]() +introducibleArray.append(Cat()) +introducibleArray.append(Dog()) +introducibleArray.append(Robot()) + +//배열을 순회하며 각 타입 고유의 메서드들을 호출하는 코드를 작성해주세요. +for i in introducibleArray { + switch i { + case is Cat: + let cat = i as! Cat + print(cat.meow()) + case is Dog: + let dog = i as! Dog + print(dog.bark()) + case is Robot: + let robot = i as! Robot + print(robot.charge()) + default: + print("해당없음") + } +} + + + +print("--------필수문제 5-------------------") +// 필수 문제 5--------------------------------------------------------------------------- +//위 함수를 do-catch 로 호출하고, 각 에러 상황에 따라 사용자에게 다른 메시지를 출력하세요. + +func test(_ address: String, _ status: DeliveryStatus) { + do { + let message = try predictDeliveryDay(for: address, status: status) + print(message) + } catch DeliveryError.invalidAddress { + print("잘못된 주소입니다.") + } catch DeliveryError.notStarted { + print("배송준비중입니다.") + } catch DeliveryError.systemError(let reason) { + print("\(reason)가 발생했습니다.") + } catch { + print("알 수 없는 오류 발생했습니다.") + } +} + +test("서울", .inTransit(daysRemaining: 2)) +test("", .inTransit(daysRemaining: 2)) +test("서울", .notStarted) +test("서울", .error) diff --git a/BasicAssignments/mission4.swift b/BasicAssignments/mission4.swift new file mode 100644 index 0000000..412cfa6 --- /dev/null +++ b/BasicAssignments/mission4.swift @@ -0,0 +1,59 @@ +// +// mission4.swift +// BasicAssignments +// +// Created by Yeseul Jang on 1/7/26. +// + +// 필수 문제 4--------------------------------------------------------------------------- +//Introducible 프로토콜을 정의하세요. +protocol Introducible { + var name: String { get set } + func introduce() -> String +} + + +//Robot, Cat, Dog 타입을 정의하고 Introducible 프로토콜을 채택해주세요. +//Introducible 프로토콜 에 정의되지 않은 각 타입 고유의 메서드들도 하나씩 추가 정의해주세요. +class Cat: Introducible { + var name: String = "" + + func introduce() -> String { + return "안녕, 난 🐱\(name)라고 해." + } + + func meow() -> String { + return "🐈야옹" + } +} + +class Dog: Introducible { + var name: String = "" + + func introduce() -> String { + return "안녕하세요, 저는 🐶\(name)입니다." + } + + func bark() -> String { + return "🐾월월" + } +} + +//Robot 타입의 경우, name 값이 변경될 때마다 변경 이전값과 이후 값을 출력하도록 구현해주세요. +//만약 변경 이전값과 이후값이 같다면 출력하지 않아야합니다. +class Robot: Introducible { + var name: String = "" { + didSet(oldName) { + guard oldName != name else { return } + print("name 변경 알림 \n변경 이전 값: \(oldName) \n변경 이후 값: \(name)") + } + } + + func introduce() -> String { + return "안녕하세요, 저는 🤖\(name)입니다." + } + + func charge() -> String { + return "🔋충전 중" + } +} diff --git a/BasicAssignments/mission5.swift b/BasicAssignments/mission5.swift new file mode 100644 index 0000000..f0451f0 --- /dev/null +++ b/BasicAssignments/mission5.swift @@ -0,0 +1,32 @@ +// +// mission5.swift +// BasicAssignments +// +// Created by Yeseul Jang on 1/8/26. +// +enum DeliveryStatus { + case notStarted + case inTransit(daysRemaining: Int) + case error +} + +enum DeliveryError: Error { + case invalidAddress + case notStarted + case systemError(reason: String) +} + +func predictDeliveryDay(for address: String, status: DeliveryStatus) throws -> String { + if address == "" { + throw DeliveryError.invalidAddress + } + switch status { + case .notStarted: + throw DeliveryError.notStarted + case .error: + throw DeliveryError.systemError(reason: "systemError") + case .inTransit(daysRemaining: let days): + return "배송까지 \(days)일이 남았습니다." + } +} + From ed899303bd9a92831ba7389f1d9b4f3ad1d80410 Mon Sep 17 00:00:00 2001 From: yeseul jang Date: Fri, 9 Jan 2026 16:42:54 +0900 Subject: [PATCH 08/17] =?UTF-8?q?feat:=20=EB=8F=84=EC=A0=84=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 31072 -> 38221 bytes BasicAssignments/challengeMission1 - 2.swift | 102 ++++++++++++++++++ BasicAssignments/challengeMission1.swift | 75 +++++++++++++ BasicAssignments/main.swift | 12 +++ 4 files changed, 189 insertions(+) create mode 100644 BasicAssignments/challengeMission1 - 2.swift create mode 100644 BasicAssignments/challengeMission1.swift diff --git a/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate b/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate index 456d92e0662903bbbc01dc3cc66310260525c732..7e264cfbba4bce3fd49b1db46141607d9b6f3130 100644 GIT binary patch delta 20397 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 delta 15259 zcmb8W2Ut@{)INS^Zp8vbN`O!T1f&xn1(49COX!3WYCy3U>?LS8!ZGk1Q z0z%*b9Dy@%0dBw-_yKNPHTVQRLm_m4j?f8;pfhxVuFwsNp*!?~0Wc8Cp#myl42*?wFdb&VPB0VZ zzyeqZHBesxE8$=`1P+D6;BYts>LCvi{0@$UKfsA_5}XWY!P#&QY=lj4AzTGl!!>X% z+yH-vyWnnk30{M@;T?Dv{tchPXYd33Op;`4vJKgmv?T3GA?ZT8lOCj$3?W0wFj7X! z$p|uzj3*PwPGlyj){|LeHkm^fkhNrIvI|*9b|t%!-N_;32=Y7fdvXjpj+{tNA*Ycu z$vNat@}Ts-lpp0!g;6p}PN}G9Duzm>(x`MQgUX`v zsC=q`Dx=D&fz(jyJ8CR7jv7x*qoz|cs0GwQYALmbT1y?Gj!|c*v(#1U8g-qzPd%od zQSYetG^9z|g?6VsXm7eb?N0~LQaXf|(+WD0?m)-Tv2-HcQBSARX>=y7rgP~$T0@u8 z6||1-LU*To)AjTqdKk^qqv;>$G4yzPDm{Zo>WNtIhnCHwp<}*vM6w9#|Y+F{qwqtErA?v_8vQDgo z^5_T!Oie1O9XE(B&*sbg~b{D&w-OnCokFY1% zGwfgNZT1d(m%Yc{XCJT+*+=Ya_6_@%eaHU8S#kE9GbiRGoDb*A1#&@LFqh1waH(7x zm(FEyow!U+&1G@fTs~LI>9`uMmg~*+;rep@xPjbIZe%t$iW|>O;3jgDI0HAITfjAN zja(DAnp?xI<<@cQx!<|X+z###cbGfEo#oDP=edX6BknQxg!`L&%01(rb1%4;+*|G= z_m2f_!B`lEGBFg`#^)NgGYu{y_+ES}0?7FB9Ri~en2JCn0$cesK4kqcb{hbthFz_4 z409b?8JaATK!vHKZR^ykmM3^S-m%=e#l#wH+SnMPTU!`*L@5m;Rq=ux!ivZx@`!w* zx9MaT!?vhV9MRuYa9f`nSqWPcLrf+2a%-Kb>9&q8tqHx!=2>pt725(0lkHXZr-^@C z8)Z7|Rc^h@u+~hQtu4ULX3LL;L_v~e7=H}`Hv~%gkaFt)LuGGg!v?{t zj75Z^k;o*}yoC2|Bo-4(cqt#shnyzb5|+5j%ZU|)V!;AF0`uSu+{uCMFWv$F5tCVXg(AyX)?C#(yNNw~Bwxw%{8WAof6Um2e{b`k={DtGA#==RQ~qzroH8Ab zD7Ws}3|yFDx}#k&ahAA2D3%lFi1Wk+;v#X0xJ+Cjt`gUX>wE`3idXT`d<-AU$MNxe z0-v~?xJd-!mz=mw+#&AbU-t<)-;qznuQWcLFXgrPSDBF`hRPV*^k@&~>=9Bpp)7!_o!8)9?XvPUJz=E)E1T5hA48Bt%Xa!pHnS35* z=hnV1h8-e*y*02go*@A3cr~BZ2yB5JpUvm+xh37}de)@&)YS~C=~t%fRo%ZwP0#v_ znx38OyO^#IoQSLiypKT8+U&+Pz_pQBLugwrEd~<8z6rPk58%n?^96ii6Yv7wpgphQ zi}?~hx7<27x0k^#IMZO|@2fur0tqV+1cFO5bA$T#uhUfxuCM8*wzlrSrEBl+&#QZH zPLlQ6rU^{si%i!8At1CMGdDj!HL($d5L(Yz-2%e+?-Y>Zh7{j6q;Ng)*^r@5+VOOf zw)URYFuuq$mNQi$tQ*~1y4?Xp8}Wz&D!!br_zxZi-o>S;Bgn#j21y_pq<~bA2GT(W z=mau>ny=!kc^zNF*YchDE_@x|mG8D3WSjjA@<9O+Km>v!?C0*ye(uc=H>v|a;wwLA zfX>*@pbOul+0URG_A}^C1Q_3ZPh7?L_OWKIaj0Y(P@oU@+g0 zAB?@+;FatFMu6{(p3nmx3sF7apC8Z!MuJhmn;*yz!oJAG4j9gXaTvDoAlNX?-@R4Q zDKH5aC*$G{fA_kgmMa;+4C9ri0RcaRS2u#0U=}}=AI9hYe;8t|HFM-A6GuFEip@B; zG}8bUnn7;DAnO~!EHD!{G8FgZhQwYEmV*udm(c`%Yeso9*aEg$eM2H@Ck6r*x{4l4}LWN zLnAm1&hTUSab|?|;3Bwc=DH{Fz+5ln3!1<+a2+H3BR|%N@F{Q$!}-^@q;y)p?%AUH z)M?`e^|CpcKOqUT8{EaG-uw2{@Sf8nAMQ%)HDl|%>0tg`qDM&*GvXFxo zuoZ9Mr}5MI8T?Fs7C)Px!_VdCEr)H)=tFBLfbEDtXp7PRsTutR{7U{8{Cm|`98ZHD z*ags&|GC)(&>On|wkHCNZ+<@JxAE;`oz#p!41yuJ$1oU5`3AnR5r)DrzKLIqZ_un` ze)%vQb}*h2fvLF=QxisEYA*U8s41Wyx3n4$ld#)h0!)M*`6c{PepwSthAG%>%lQ>w z1_o3URxk^Xg!|6MfdO-IF%K7gUEBk)gm^cj8{E=r5iB*K3rjG%t1-D@6z;|%6S;*& zRj`K<-D;?VHLw`y)p8M>w9}hLPRIZ^!6bShsHJ^AtGE2;Nj^ z;CJ%78sT&}gWt{X`xoClI2ZnGye$Fz33F_Z@wOJ=+uHl>&>z^+=pwkx2=8LJ1TN+G z^9T5YO>j9}f#E&GAO08Kbr{d}7|-s(CU}3t#f`W)GuYjuh2d~B+-AmfE5`Kbe=d#% zL#W>akN;ov0-k8b^fWwURAqP`V|u(9(^LFq3{Wb6<%?dx%SJe_@F!Z}yl#Z^2E1u} z^C$T~{EZ(NPiJe}mRr9E9~$wz4sH(5`+~AzCE>milwEf zZ`$|cF5kLcbpPS3FLFWVQzUD0CCOk{Uc}>{w7_z4=^IxH;33agGre2p8q$hvXYvFo zz@E7JpSnir_8}ceCqmIcI`Y>WND+VYtAL9Xo1&*1<<@o0(Nn0QEVPxX88p(9^d%IF zND1jhdXw!*AO27N7XKH2o4>P&^dtSr05Xsa;_o8R3W3%LxFFz)1EfRJ2hOAdyNFcs z_jsQ(WF*;vjKY|x$Y?T#j5VAL5x3zV@(=j?2v~f5Z6^;hkxU^JO=L$hiA?4n@sIf@ zO=K#WMyB(B^H2F__yP+;JFCfD;|22g=e$o#ZwtvX9DvWP4uOUP1E%fH}X@~`;U z{2Tu5VzQj9z~l-btI2Bq9Re(7RWAfM{2#Yj8g@}l_8tS9@E z1IU5oApSl7k^hJP#D7MBKmZ^B5g-wu5TFrYPT{*7N)9837vWf`Uwz-Yo}Kv*hOsjD z5K>R_<aG*;vUDk#pEh-BcWJIt|r%z zYsq!wdh%Ct1Nj>QZ4hXSfF%M}2v{Q^K%gB0HcQD(ai4Tg;o(R%VOdGG7v56MSg8~!F= z7+L?6NF#7&D(0PerzY|x`HFmvfI9-Q2xNXWbX#)DmLB{=aaeK5PvmEcpa2CalA? zu{Z8j^jEW50p*5=ASFg1uvv#GPprd~gz_@J5ePyc*!+o;5}>uVY3?f(Km}vPq5>&= zMhF6-jg*wa-(d(S{+-{PDFqc_JWXkIy$lBsR3w;%fZP~C7@}fD?WtHQ5vw*8N5xYK z2q+NPRIS?=ljB4qxUpsuN*FW#UPUj5E$@R5mW=;9^jmyA+2EA!bb#fR_1< zDx``{s!A2{s@wl%ile$WqukpZHc<6Ol;c`ZPA~@!*jHa> zIcks*-oXgOx4=6L!)sJ9{E`M3)ywp1(LZV=HQI>RDC&Cz5)tUwNc}*KK_Cf%)PG^E zq$W_4jdv!XCh=+nlJSH=P35x@Ncm>Au}*LC*i34!aen-7>PXE4-qg!n;>3W-0#1qc+Hf(YsX#^fQ!WOkwn zq9?fcH!ki?{0~IWsaM8py)e?g$VmICMukhk@qmeW&eR9$lNrN*j2M=DgCR}P)`VgO zP16j`(j09;x1w9qZRobNC5^RIivX@xi9j_1H3)P@pbmj<2=qVz-*}%Dw193$+t9YO z9c@nwX$RVocA~MO_Cuf^f&K^#KwuyOgAl;n9D=}51n{^R{zaYI8rQ#QQ)GcanV}&m z$S^lK*n;*l#u^B(rx`7;(y_(QY^gF?>XNV}*lf|6EZQ_|k(n*ECd(e9CBkg!VzTVY zz?NvUrK`y@p%b0Ck9RU#dYdeVQm`e*Z0T#LOwZGsl6X3w zF8E5L=_0!LYlD`?5r=WzteGctC0+Hkp@y#g+E7P#{o2rj?)kN$51rrlYfFE6z}JSs z^pLL&!|4%U8xTE`uy3I83a7q-9)$pp$+JT3t*3v)>?hjsj4Q&!c~$u@Ydd8IQmu<2sUSYGTKn z{yh_V^{lTMRG(8*jaRDrV98=ZT^{DZTJ1{1u=glXX2#hn$&Gc$|4PJ3dtgNqTq*s4g z=%UxrzZ%Pb2k3+JA^I?Vgg#0iqmR=k5HKJx4T0$h z%s^l!GR|GI5x}_3T}H_1Q$!$rhCWN5qtDY9aJG|%z&zs|`x62f%J~T32&4gvR&H@! zzxC-ktwAXLkbX)i7SfOC$Mh5WZv>hUScm{daq&X>8U37oLBB)*!?_fJWe664sN19GXw(=Sb@MA1TZ8mE@dbN#|=#k%`gm$z)A#uL10xAJj1l2pYd4YR^uj( z@Oc|<6uBBk=5>o>+A;S3Lls8II53U~tVLiQ0_*t@&zPs?S+$xFdqF~cig6{Z7&k_| zJ~-cj(t}@3K4d%?PwkiZ3cIqh37aH@*6i5IW|$doCJ+brxSu|ZFT*na3|4B~+usn_ zh&znHCIo(8Oxz)>87UKD3h_%#vHfNQwzLHK<<=gUmvMMCdqADxevzHwV$pEDiDpcs z*|`b6y~Ta7bIbC2=_&_{E9=G5h)9`vm5PZrhq5g_ieu7n+{(l=2}~l>kx62bnG^WjDPMhe&Lw)QL#JF zFj@x7#!{w?DQ7B}N~VgbW^@b|>jMZJMBoqthY`S2*ii(IA#i*tA!oWUbxc>L8`GWX zf!oGxI)PwY+&qHq5VS#Xim`P=P3giYW-z12SsgQk8OjV}hBG4&IEla?2%JLTGy-Q9 zF+78q@0gLyC(nJJiz%mij4Gl{{naSnm=2;k}Q z;zDLBV_>E+cwglb0+>Qq@DE(IO<8R#W*+ksVUHCv*D$Qi!SoxlwQuB!zgqN;cIx_Lb@#U5B~Kvm34s>~{A1W$9TCU8z;P4vl6l3vX5Jw13W2u> zyhq>zo?4jq%m>`iM&&{at_YF{QV7yb%y+CiGt@+L29E@c+0&Yz6Ifq1=zpU) z8_Y`C5H=V=4nYe9Tj3vHq5xLTD!!21(<73N`oeKmgLZAS5@o48cwm&-% zPoC@m1l=0gK?sU*Csz-3jAe(BgB#i5><9$i5p4hO+`}UFdmK)%-?1avQ3!e<=!u}D zi5*SI*)a%u8ApIO76fV6NPS=NSNAuW#jB&=)|^fRvNI9%!Ga2Xjd6$-*89Yos{Wlj z*Yu6U6!MH6apS9o=CMDS11D?ZEB><$Y$MymJYg3R_>SdRMuQLxHx2+8$oDe5>8ea; zml0V_>~eMmyAnangb;+6z+0%#t~QYouZ|m;{vXL{A?vT^P=TP5C(5nA>{4T~#49W89(J!`iqf8LWcLwT<1ZJ?GWGy_kUdn~ zyRyEEd7%lxNCfe2X`Ug@BF(tg=VY#Zls#6GSdf=g*S#hSpWMVAXHOXHdU$ErKd?lw zrx1+#kK@j=SFotD=h*Y?1@8i|V(g1+>~;LYTdPKgBp{e* z`fuD;4Kd8@F(R03;p=1enQ>e`VgF{IBAA3AW_(H$`<#7&b03H+_rmEZMgM<}Faui3it2vhAI1Ba#*P3fXBypC8?LGJFr3mIAh~Z1e zZ6Vkj!Ja&x6?4CGI%mxZ{&jjbf*JquxoK&L6Jnop4xA&0$4n;#GZ9q(FFyau(Jly@ zJ>6{Oyv$zC`r_qw-+I}Q)LY$|lX7?$WjPnZg>qq>jFWQ;PRWIH5gc}8K7s`Z79yxY zun56o1WOPsMG%kjvgKTqIW^{D&0E@BB2JBAIR+o^!Xa2`-qc2Tn*&FgUv{-SaXA=Y zE*HUy=KPo|FfKcMv#s6iI!?<~;B1sD(yQ;_)cTqpjoehjtmb|~5Q`{ItMS}23bTIQ5LFPjkXvS~wuoEIE#a0T zI1oXsv4asDvJksD0L;QUL@JINhGB1p7+i*qu;qT`e#3&yZ9s5X1Gf=DoT3{ASM)*5(pDX~Lj=9ek z1cFl$G&CBoYPwR0Vb_RgtFQ=hNJO|eBt)tZE5l_5OTCxg^px6sdI`=+f2X(8JMnXA z2XLNv6laLHnKq0gBf}4ug)@=((Xwd#Xjwc?C6aI&k%n`HOdQd7V|w6+%lhI6%Ld}G zeHf$1aryW7!LqS9{$7F~9s7fM%Zk}hHU-bsgW1V=5;%(=$9l!J;@WVQSkCnAI9vQg zmILR6pUQH@&t(N-0g2-hxQ_U#ti|}Ds?FRU{3z9N{1DY&+#T*7_rRi)MX^PxMVUo~ z#U6{37N;!ESe$F6ZdKZPKS*k6wt?aBktRz<6dMh8RhgL7GK3W57OKV4Kk+qApo3*>OC*I1JT8CQ8 ztd-W0)=}2otmj&v6|@s1333G*L9w7zP${Su)Cf8Y>IMA;0|bKvNHA0IvtWf_li+v3 zX2Dj$A;CGp1;Hi36~Q&Z4Z)v+zXi_(F9fdyZv^iI9|ZrjYt^nzJIi)@>vjX%jcPZ# z-I#V`+r6=&Y#1BPrj^Z5n=v*&+03_TuxYYcWV6I(nav8DUu;&}thL#1bI|6n%~6}< zHYaUP*_^RCXLG^klFb#HceW0;QMP5a-`Os;J!<>Vu9aPTJE>imo!m}o7i*Vlmu}a| zPHmTMmur`AS7@iPE3&J#>t@$OZ`aGN-fn>1AiE)UGwn9p9k4rUciirz-C4Wyb{Fj~ z+ugN$ZTH!pu!r`vy`{a4z1Y6Jy|2B$eW1O}USS_@A88+D-_w4Q{U-Ze_Q&mS+TXH& zWdFkctq=%X357yGVSrFBR0$ghPargj0ligK)ZVrf{}! zuJ9+}d|`vINw`V4S-4fWUAR-YTew%aUwBY>Sa?);T=>wTl|zt2mP5V69Ea@=R~or0XyP8z2gr$J6boJKlLc4~53LKbS>LcnW>Mt578Y~(r8ZH_w`cX7aG(j{&q@OQp5H*PwiI#|# ziB^by5p5Rj5bYA}5gimA79ABG7d>;fbQU>#I7^(poqe2xokN_%oaN3+=UC@X&K1s8 z&fS~`IgfLm;5^59zH@_flk-yN<<2XeS2=HU-sybE`H1rc=c~@woo_ndalYsL!1IZ zx;}M%?)uX8wVREb!Y#oq#VyS(!!6q_*Dc?z(5=?3&TW9(a5udha?_7=8|yaSZKB&` zx2bMh+#ZW9#X_+}tQ1Fxi*Qj$|J}l-6PMVQ14OXQR1QV=;6`JqmM^FkNzG5JqCLW^%&zZ!DEug6ptAmvpnW_ z%=7r&xkDSud7~nyk2;{^?L91(HnS^-n2LCZSU>r z?d|R3?e87v9qb+D9qk?K9q+x$dyDse?}Ofly^ney_de-;+54*Z4ewjtcf9X=KWy*R zKDGV8_DkBIY=5!+mG;-#-)R4={Rbb~N8n@QW9K9Eaq=1MGs#Ck&!@>}k|P|JnW<{I~n>^#2^d z1+)r~2Sf+N2FwVUAJ7o+B;ZZJyFg)}I50R+5f~E~8<-H-F)%Z*XJG%p>47T(4+NeG zyd8Ki@L}MSz-NIk1K$L`5Bw*{GDr|)8zc;J3UUb&2YCj02l)gg1nJ9yP|(t#b3xC7 z+XTylw^0R_X{2ntPdU^YzUqmyf}DC@Y3Mr z!5f1&1^*trCHQ&pXDJ~CQc`Ly6-e7jZKdu~AF01IP#P>%NF$_C(imx+G*g--&5`Cw zE2RUZgQdfydg*t1>G#qx(s9y>(kaqu(q+<>(pAzm(sj}e(oNDW(rwb6(%sU%(wiYf zh$JK_q-)6JkY7Vihdd9p3Uvq-g}R1{Lw!R-L*=32p&de_Lt{e|LOX`$gcgPthiXHs zLTf_1gmw-6A#{1@#?Y;yJ3@Db?hic_dL;B%=#|i$p-)0zh3emiehB>(Mu%}>t;5=e zS%rm%bqyOAHZ80n?ANg0!ghom4Z9w8GweawJDMPpMRI`=Z9;; zi^DsI*M)Zr?-{-`{8;#j@IS)OM0iJpMaUzR5s?w&BW6d;jrb{ILB#Wj&ygUKjASA; zku{N>BkLl&M{bWi5_v50MC7RsdP#?n4q+YS9l|?|?J%>$><)7~{M_MbhkrVJjsj6s zR6$gAR83UpsIF04qYgzKjye)`Eb3C!<)|xB*P@_AsDGk9sR&hDm8Hr` zB~ZDl+*D$fhbmYlRfVX+RI#c!RlF)um95HA<*M>kRjO*0PF1Vwr>a-=*Q*AqMyY;K zja5xhO;$}+El{mjZB^}1?NaSgom8DxomE{>T~=LH-BI0FJybnWeTat9bTk*;I=Wr7 zU9>~ADB2}DI(k6#{OFa@tE1ONZ;0L$y*c_=^ttG3(RZUCM8AlBAN@I|O^j7cyBNC| zhZv`rz!*hLcueP*`j~++Lt^y9WB8cwV%ElNj@c8lKjw7IotXPEk7E9gc^>mB=55S} zm`|}F);88Y)-hHT>l*7GD~W9%>lYgk8x$K6n-yCZJ1o`^yEJxP?BUp3u@7RO#@WS* z;=JSJaq)5KahY-1ad~ltaTRgZakX)Eaoyv3#{Cf27`H9%Y253$k8z*kS$(`^ydd5- zUKsBb-#$JlJ|tciuZ)k5kBv`=Pl`{8?-M^i{z&|>_)GCOVBO4_2dO=-u|Zl*m+dzbbx?Q=TRr_v*`l|Yd z`j+~R`kDHr`nCG4`h)sY7LnzU6`NI`H9c!f*50f`Sx2)@WSz=-ko8YClWmdRCfh38 zC%Z#-T6R@-|LiH*hU^*Hv$E%A|D4^BeKz}A_TB6U*^jfIX1~aOl>>9y=Gf?S>~kD) zL^BDCcO-i=2doxdr6U;g3zWBDiZ z&*q=czm$KafGO}R2rG~kC<|f>Iu%qE)D(0n=vL6Ppie=4!N7tc1;Y#Yg6Rdb3g#62 zRIs3+sbF!zvVxTbs|(f@{916Z;8meRp=V)gVP)aK!qJ7x3Xc|EEWA>9z3|V%+l6-v zKj<}-#zNCZW2I@QanpEfd^G`@V2wf(q3NKB*2HQuH6@y!nn4<*nW&krnWdSl`B}3_ zvsANO^NVJ+W|!u$=Dg;D=A!1Z=Bnnk=AGuF=5rA&qKnv~h@$wS)S`?cbx}@HUQuO{ zuBf)CuBg5U6^$wyUG!toyrN}AD~t52iq;nGE&8MAOwswGi^bu^am9tjrNw=VhZc`6 z{;_y`@vY)V#czv0m$WW%De*4xEeR+IE{Q5hEy*ZRm*kY>muN~#O1hMEE$LCxyQE*q zfRaHaLrUh9EG}7FvZLg5$?cLiCGSd^(zd16r8cGZr7or7QqNMa()OiMrFo^@O6&Ed z151aL4l8Xa-Bx$L;5L$t%RdhIOjTY;t=b*h-P*m{KeT7G=d>5KceMAl54BIUAGDv!h%&OwzRa`CyUe%Dzbvk- zPuYkvL)nb7*=6&}=9e{=Eh<}DwxUeGs%&l9{<1@5N6LMI6T45=7aF~4GK#i5Fm6{joCRa~sNQE{u{PQ|^72bDIJ9V=@qdsPmroK!iba!%zE zedXrLt(Au=k5`_oJY9LA@>1oM%4?O6E8kast^!q5l|@zSs==~ZL8W@wWn%d)$yu3RnMwERCCpWYTIgIwNtfAwRg2o zwO@5Wbx^gmIg&~iRo|_CQ2n_2y$LPVS2bQWIW?$eWzCgZ%UV@!Ol?MOMQy*@0nxSk z+Htj$Yv0=1`V&(uEZY-w8hA|Nz>TQvXei@8J)ou&T|kH!a+ diff --git a/BasicAssignments/challengeMission1 - 2.swift b/BasicAssignments/challengeMission1 - 2.swift new file mode 100644 index 0000000..fa48077 --- /dev/null +++ b/BasicAssignments/challengeMission1 - 2.swift @@ -0,0 +1,102 @@ +// +// challengeMission1 - 2.swift +// BasicAssignments +// +// Created by Yeseul Jang on 1/9/26. +// + +//protocol과 struct 이용해보기 +protocol EngineProtocol { + var type: EngineType { get } +} + +struct ElectricEngineS: EngineProtocol { + let type: EngineType = .electric +} + +struct HydrogenEngineS: EngineProtocol { + let type: EngineType = .hydrogen +} + +protocol EngineSwitchableCar: CarProtocol { + var engine: any EngineProtocol { get set } + mutating func switchEngine(to newEngine: any EngineProtocol) +} + +extension EngineSwitchableCar { + mutating func switchEngine(to newEngine: any EngineProtocol) { + engine = newEngine + print("\(newEngine.type)엔진으로 교체") + } +} + +protocol CarProtocol { + var brand: String { get } + var model: String { get } + var year: String { get } + var engine: any EngineProtocol { get } + + func drive() + func stop() +} + +extension CarProtocol { + func drive() { + print("🚗 운전중입니다.") + } + + func stop() { + print("🛑 정지합니다.") + } +} + +struct ElectricCarS: CarProtocol { + let brand: String + let model: String + let year: String + let engine: any EngineProtocol + + init(brand: String, model: String, year: String) { + self.brand = brand + self.model = model + self.year = year + self.engine = ElectricEngineS() + } +} + +struct HybridCarS: EngineSwitchableCar { + let brand: String + let model: String + let year: String + var engine: any EngineProtocol + + init(brand: String, model: String, year: String) { + self.brand = brand + self.model = model + self.year = year + self.engine = HydrogenEngineS() + } +} + +/* + //상속을 사용하여 기능을 추가하는 것과, 프로토콜 채택을 통해서 기능을 추가하는 것의 장단점, 차이를 고민하고 주석으로 서술해주세요. + 요구사항 정리: + - Car 타입 안에는 파라미터 brand, model, year, engine와 메서드 drive, stop 존재 + - 전기차는 전기 엔진만을 가짐(못바꿈) + - 하이브리드차만 엔진 교체 가능(switchEngine(to:) + + class 상속이용 시: + 장점 - Car안에 메서드 drive, stop가 있고 상속 시 자식들이 사용가능하다는게 직관적이다. + 단점 - 엔진을 바꿀 수 없다는 제한은 접근제어와 init을 이용해야만 한다. + 한 클래스에 여러 기능을 넣기에는 상속은 복잡할거 같다. + + protocol 채택이용 시: + 장점 - 여러 기능을 붙이기 좋다. + 단점 - 지금과 같이 any EngineProtocol타입인데 특정 인스턴스만 갖도록 설정하려면 + 기능이 다르기때문에 새 protocol을 만들거나 associatedtype를 사용하게 되는데 + 그러면 해당 엔진 타입 때문에 차가 CarProtocol타입이 안되어서 나중에 활용이 어렵다. + + + 결론: class는 상태,값을 공유해야하거나 구현한 걸 재사용할 때 직관적이고 좋은거 같음 + 특정 타입이 어떤 기능만 가졌으면 좋겠다 싶으면 protocol이 좋은 거같다. + */ diff --git a/BasicAssignments/challengeMission1.swift b/BasicAssignments/challengeMission1.swift new file mode 100644 index 0000000..8c9dcb3 --- /dev/null +++ b/BasicAssignments/challengeMission1.swift @@ -0,0 +1,75 @@ +// +// challengeMission1.swift +// BasicAssignments +// +// Created by Yeseul Jang on 1/9/26. +// + +// Engine 이라는 커스텀 타입으로 정의해주세요. +enum EngineType { + case electric + case hydrogen +} + +class Engine { + let type: EngineType + + init(type: EngineType) { + self.type = type + } +} + +final class ElectricEngine: Engine { + init() { + super.init(type: .electric) + } +} + +final class HydrogenEngine: Engine { + init() { + super.init( type: .hydrogen) + } +} + + +// Base Class Car 를 설계해주세요. +class Car { + let brand: String + let model: String + let year: String + fileprivate(set) var engine: Engine + //main에서 볼수는 있는데 엔진을 임의로 바꿀수 없게 + + init(brand: String, model: String, year: String, engine: Engine) { + self.brand = brand + self.model = model + self.year = year + self.engine = engine + } + + func drive() { + print("🚗 운전중입니다.") + } + + func stop() { + print("🛑 정지합니다.") + } +} + +class ElectricCar: Car { + init(brand: String, model: String, year: String) { + super.init(brand: brand, model: model, year: year, engine: ElectricEngine()) + } +} + +class HybridCar: Car { + init(brand: String, model: String, year: String) { + super.init(brand: brand, model: model, year: year, engine: HydrogenEngine()) + } + + func switchEngine(to newEngine: Engine) { + engine = newEngine + print("\(newEngine.type)엔진으로 교체") + } +} + diff --git a/BasicAssignments/main.swift b/BasicAssignments/main.swift index 408fa11..60eaf4f 100644 --- a/BasicAssignments/main.swift +++ b/BasicAssignments/main.swift @@ -178,3 +178,15 @@ test("서울", .inTransit(daysRemaining: 2)) test("", .inTransit(daysRemaining: 2)) test("서울", .notStarted) test("서울", .error) + +print("--------도전문제 1-------------------") + +let electricCar = ElectricCar(brand: "전기차브랜드", model: "전기차모델", year: "전기차 연식") +electricCar.drive() +electricCar.stop() +//electricCar.engine = HydrogenEngine() 이런식으로 바꿀수 없게 설계 + +let hybridCar = HybridCar(brand: "하이브리드", model: "모델", year: "연식") +hybridCar.switchEngine(to: ElectricEngine()) + + From 33a2cfb3929cac0607a46da53f363e5d1be92d85 Mon Sep 17 00:00:00 2001 From: yeseul jang Date: Mon, 12 Jan 2026 09:25:21 +0900 Subject: [PATCH 09/17] =?UTF-8?q?feat:=20=EB=8F=84=EC=A0=84=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C=203,4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 38221 -> 39726 bytes BasicAssignments/challengeMission2.swift | 14 ++++++ BasicAssignments/challengeMission4.swift | 44 ++++++++++++++++++ BasicAssignments/main.swift | 7 ++- BasicAssignments/mission4.swift | 20 ++++---- 5 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 BasicAssignments/challengeMission2.swift create mode 100644 BasicAssignments/challengeMission4.swift diff --git a/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate b/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate index 7e264cfbba4bce3fd49b1db46141607d9b6f3130..ef09a537226170edc43a6bd30de3bd94e54978f6 100644 GIT binary patch delta 19751 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 diff --git a/BasicAssignments/challengeMission2.swift b/BasicAssignments/challengeMission2.swift new file mode 100644 index 0000000..4417d5b --- /dev/null +++ b/BasicAssignments/challengeMission2.swift @@ -0,0 +1,14 @@ +// +// challengeMission2.swift +// BasicAssignments +// +// Created by Yeseul Jang on 1/9/26. +// + +struct SortableBox { + var items: [T] + + mutating func sortItems() where T: Comparable { + items.sort() + } +} diff --git a/BasicAssignments/challengeMission4.swift b/BasicAssignments/challengeMission4.swift new file mode 100644 index 0000000..9b26128 --- /dev/null +++ b/BasicAssignments/challengeMission4.swift @@ -0,0 +1,44 @@ +// +// challengeMission4.swift +// BasicAssignments +// +// Created by Yeseul Jang on 1/9/26. +// + +final class A { + var b: B? + + deinit { + print("🅰️ A deinit") + } +} + +final class B { + weak var a: A? //약한 참조 + var closure: (() -> Void)? + + deinit { + print("🅱️ B deinit") + } +} + +func makeMemoryLeak() { + print("memory leak start") + + let a = A() + let b = B() + + //참조순환 + a.b = b + b.a = a + + //클로저 기반 순환참조 + b.closure = + { [weak a] in + guard let a else { return } + print("b 클로저 안에서 a 참조하기: \(a)") + } + b.closure?() + + print("memory leak end") +} diff --git a/BasicAssignments/main.swift b/BasicAssignments/main.swift index 60eaf4f..6dfeb79 100644 --- a/BasicAssignments/main.swift +++ b/BasicAssignments/main.swift @@ -142,12 +142,15 @@ for i in introducibleArray { case is Cat: let cat = i as! Cat print(cat.meow()) + print(cat.introduce()) case is Dog: let dog = i as! Dog print(dog.bark()) + print(dog.introduce()) case is Robot: let robot = i as! Robot print(robot.charge()) + print(robot.introduce()) default: print("해당없음") } @@ -180,13 +183,15 @@ test("서울", .notStarted) test("서울", .error) print("--------도전문제 1-------------------") - let electricCar = ElectricCar(brand: "전기차브랜드", model: "전기차모델", year: "전기차 연식") electricCar.drive() electricCar.stop() //electricCar.engine = HydrogenEngine() 이런식으로 바꿀수 없게 설계 + let hybridCar = HybridCar(brand: "하이브리드", model: "모델", year: "연식") hybridCar.switchEngine(to: ElectricEngine()) +print("--------도전문제 4-------------------") +makeMemoryLeak() diff --git a/BasicAssignments/mission4.swift b/BasicAssignments/mission4.swift index 412cfa6..0744de3 100644 --- a/BasicAssignments/mission4.swift +++ b/BasicAssignments/mission4.swift @@ -12,15 +12,17 @@ protocol Introducible { func introduce() -> String } +extension Introducible { + func introduce() -> String { + return "안녕하세요, 저는 \(name)입니다." + } +} + //Robot, Cat, Dog 타입을 정의하고 Introducible 프로토콜을 채택해주세요. //Introducible 프로토콜 에 정의되지 않은 각 타입 고유의 메서드들도 하나씩 추가 정의해주세요. class Cat: Introducible { - var name: String = "" - - func introduce() -> String { - return "안녕, 난 🐱\(name)라고 해." - } + var name: String = "고양이" func meow() -> String { return "🐈야옹" @@ -28,11 +30,7 @@ class Cat: Introducible { } class Dog: Introducible { - var name: String = "" - - func introduce() -> String { - return "안녕하세요, 저는 🐶\(name)입니다." - } + var name: String = "강아지" func bark() -> String { return "🐾월월" @@ -42,7 +40,7 @@ class Dog: Introducible { //Robot 타입의 경우, name 값이 변경될 때마다 변경 이전값과 이후 값을 출력하도록 구현해주세요. //만약 변경 이전값과 이후값이 같다면 출력하지 않아야합니다. class Robot: Introducible { - var name: String = "" { + var name: String = "로봇" { didSet(oldName) { guard oldName != name else { return } print("name 변경 알림 \n변경 이전 값: \(oldName) \n변경 이후 값: \(name)") From 7576c3d977431060e354c5f7ff884c3072a8dfe9 Mon Sep 17 00:00:00 2001 From: yeseul jang Date: Mon, 12 Jan 2026 10:39:24 +0900 Subject: [PATCH 10/17] =?UTF-8?q?docs:=20README=20=ED=8A=B8=EB=9F=AC?= =?UTF-8?q?=EB=B8=94=20=EC=8A=88=ED=8C=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 39726 -> 38371 bytes README.md | 24 ++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate b/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate index ef09a537226170edc43a6bd30de3bd94e54978f6..1fee5635a71ae1b657b0cdc41e0fc653c95adb0e 100644 GIT binary patch delta 18932 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%0DL-Br7{c7N@m+M~6{Yfsi* zs=Z!&tM*Rqz1sV=FKb`dzNvj*C$8&Rr(f5n&azHgr?#z=)dkc=)+y@Z>f-B0)>YSi zRyVb7M&0bXFY4yiEvWmduC=bCZh75~x?Od9>h{$gs5@MDwC-5liMrEuXY0<_{W;ob z^nlUI(T$^9M;{n{yB^kC)XVA}>s{*I>iz16)Q8rG*GJYz*T>YS)Q_mouFtD4sxPgt zsIRL3qW+uu-Rk;-^+)QD)t{`tP=C4pYW+|3HyYRm|Aw@NyoRcV@eLCjW;QHpSl{qX z!|sOt4F?;JG@NKS)o`ZaT*J=|zc;*Sc-io};eDg15jK*IeH#56LmE>XGaKs~$2CrC zoZ0w!x+rOnHmSB`96-MqGWUGs+K>tlM32^dp6X3m&{V_vn`wRpA+Xz^wP^xE-DU}KvhLb_R`>aT D{TfS= delta 19411 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 Date: Mon, 12 Jan 2026 10:40:45 +0900 Subject: [PATCH 11/17] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9d96caa..cdccd47 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ## CH 2. 프로그래밍 기초 주차 과제 -### introducible 프로토콜을 준수하는 객체들을 타입 변환해서 사용하기 +### 필수문제 4) introducible 프로토콜을 준수하는 객체들을 타입 변환해서 사용하기 ```swift for i in introducibleArray { switch i { From 42c8cd1df0f40d0fb39dc63e6a35991765890b77 Mon Sep 17 00:00:00 2001 From: yy-ss99 <124860690+yy-ss99@users.noreply.github.com> Date: Mon, 12 Jan 2026 11:45:26 +0900 Subject: [PATCH 12/17] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 189 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cdccd47..1ef4d7d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,45 @@ -## CH 2. 프로그래밍 기초 주차 과제 +# CH 2. 프로그래밍 기초 주차 과제 -### 필수문제 4) introducible 프로토콜을 준수하는 객체들을 타입 변환해서 사용하기 +## 필수문제 1) 클로저 사용하기 +클로저란 하나의 값처럼 여기저기 전달해서 쓸 수 있는 기능을 가진 코드 덩어리이다. +확장된 함수라고도 할 수 있는데, 함수가 이름이 있는 클로저고 클로저는 이름이 없을 수도 있는 함수이다. + +후행 클로저를 사용하면 이런 식으로 축약해서 표현이 가능하다. +```swift +// {(num1: Int, num2: Int) -> String in return "두 수의 합은 \(num1 + num2) 입니다"} +let sum: (Int, Int) -> String = { "두 수의 합은 \($0 + $1) 입니다" } +``` +## 필수문제 2) 고차함수 사용하기 +`.`으로 이어서 체이닝하여 사용할 수도 있다. +```swift +let oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +let resultArr = oneToTen.filter { $0 % 2 == 0 }.map { "\($0)" } +``` +## 필수문제 3) 제네릭 사용하기 +`Type parameter`는 `placeholder(자리표시자) type`을 지정하고 이름을 지정하며, 함수명 바로 뒤에 꺾쇠 괄호(예: ``) 사이에 작성됨 +괄호 안에 여러 개의 타입 매개변수 이름을 쉼표로 구분하여 작성하면 두 개 이상의 타입 매개변수를 제공할 수 있다. +```swift +func c(_ array: [T]) -> [T] { + var result = [T]() + for i in 0.. { + var items: [T] + + mutating func sortItems() where T: Comparable { + items.sort() + } +} +``` +## 도전문제 3) protocol과 extension 사용 +protocol을 사용하면 protocol 내부에서는 함수 안의 내용을 정의할 수 없다. +하지만 extension 사용 시 protocol을 준수하는 모든 인스턴스가 해당 함수를 사용할 수 있게 만들 수 있다. + +```swift +protocol Introducible { + var name: String { get set } + func introduce() -> String +} + +extension Introducible { + func introduce() -> String { + return "안녕하세요, 저는 \(name)입니다." + } +} +``` + +## 도전문제 4) 순환참조와 weak 사용 + +weak은 순환참조가 되지 않도록 참조 카운트를 +하지 않는다. +weak으로 참조하더라도 그 대상의 생명주기에 영향을 끼치지 않는다. +weak 키워드가 붙으면 항상 Optional 타입이다 (대상 해제시 nil 로 바뀜) +위의 특징 덕분에 안전하고 참조대상이 사라질 수도 있을 때 사용한다. + +```swift +final class A { + var b: B? + + deinit { + print("🅰️ A deinit") + } +} + +final class B { + weak var a: A? //약한 참조 + var closure: (() -> Void)? + + deinit { + print("🅱️ B deinit") + } +} + +func makeMemoryLeak() { + print("memory leak start") + + let a = A() + let b = B() + + //참조순환 + a.b = b + b.a = a + + //클로저 기반 순환참조 + b.closure = + { [weak a] in + guard let a else { return } + print("b 클로저 안에서 a 참조하기: \(a)") + } + b.closure?() + + print("memory leak end") +} +``` ++) unowned도 weak과 똑같이 참조 카운트를 하지 않는다. +하지만 다른 점이 있다면 이 참조 대상은 나보다 오래 살거나, 최소한 나랑 같은 생명주기를 가진다는 강한 확신을 코드로 표현하는 것이다. 때문에 확신이 있을 때만 사용을 권장한다. From 877a0e3b88b829b518267c51f1f6304461b6d510 Mon Sep 17 00:00:00 2001 From: yy-ss99 <124860690+yy-ss99@users.noreply.github.com> Date: Mon, 12 Jan 2026 11:46:43 +0900 Subject: [PATCH 13/17] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1ef4d7d..7c1a502 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ print(StringArray2, IntArray2) ## 필수문제 4) 타입 캐스팅, 프로퍼티 옵저버 (Property Observer) -- 타입 캐스팅 +### 타입 캐스팅 ```swift for i in introducibleArray { switch i { @@ -63,7 +63,8 @@ for i in introducibleArray { 처음에는 단순하게 생각해서 해당 인스턴스에 접근해서 메서드를 쓰면 되겠다고 생각했다. 하지만 저런 식으로 introducible 타입 Array에 넣으니 타입이 introducible이 되고 따로 타입을 정해주지 않고서는 해당 객체의 메서드를 사용하지 못했다. 그래서 is 와 as를 사용해서 타입 캐스팅을 해서 메서드에 접근할 수 있었다. -- 프로퍼티 옵저버 +### 프로퍼티 옵저버 + 저장 프로퍼티의 값이 변경되는 것을 감시하고 있다가 코드블록을 실행 할 수 있는 기능 `willSet(새로운 변수명) {` , `didSet(새로운 변수명) {` 으로 변수명 따로 사용가능 ```swift From 102e74d596167430e5df3a359972f2005ad65597 Mon Sep 17 00:00:00 2001 From: yy-ss99 <124860690+yy-ss99@users.noreply.github.com> Date: Mon, 12 Jan 2026 11:49:37 +0900 Subject: [PATCH 14/17] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 7c1a502..4f3cedc 100644 --- a/README.md +++ b/README.md @@ -61,12 +61,13 @@ for i in introducibleArray { } ``` 처음에는 단순하게 생각해서 해당 인스턴스에 접근해서 메서드를 쓰면 되겠다고 생각했다. -하지만 저런 식으로 introducible 타입 Array에 넣으니 타입이 introducible이 되고 따로 타입을 정해주지 않고서는 해당 객체의 메서드를 사용하지 못했다. 그래서 is 와 as를 사용해서 타입 캐스팅을 해서 메서드에 접근할 수 있었다. +하지만 저런 식으로 `introducible` 타입 `Array`에 넣으니 타입이 `introducible`이 되고 따로 타입을 정해주지 않고서는 해당 객체의 메서드를 사용하지 못했다. 그래서 `is` 와 `as`를 사용해서 타입 캐스팅을 해서 메서드에 접근할 수 있었다. ### 프로퍼티 옵저버 -저장 프로퍼티의 값이 변경되는 것을 감시하고 있다가 코드블록을 실행 할 수 있는 기능 -`willSet(새로운 변수명) {` , `didSet(새로운 변수명) {` 으로 변수명 따로 사용가능 +저장 프로퍼티의 값이 변경되는 것을 감시하고 있다가 코드블록을 실행 할 수 있는 기능이다. +`willSet(새로운 변수명) {` , `didSet(새로운 변수명) {` 으로 변수명 따로 사용가능하다. + ```swift class Robot: Introducible { var name: String = "로봇" { @@ -79,7 +80,7 @@ class Robot: Introducible { ``` ## 도전문제 1) 접근제어자, prorocol 준수하기 -- 접근제어자 +### 접근제어자 ```swift class Car { let brand: String @@ -110,7 +111,7 @@ class HybridCar: Car { 위의 코드와 같이 `fileprivate(set)` 접근제어자를 이용해 파일 외부에서는 HybridCar 인스턴스에 접근해서 엔진을 바꿀 수 없게 의도했다. 엔진을 교체하기 위해서는 `switchEngine(to newEngine:)`를 호출해야 한다. -- protocol +### protocol ```swift protocol EngineSwitchableCar: CarProtocol { @@ -124,18 +125,18 @@ protocol EngineSwitchableCar: CarProtocol { } ``` -기능에 따라 protocol을 나누고 알맞은 struct들이 이 프로토콜을 준수하게 했다. -전기차는 엔진이 바뀌는 기능은 없기에 CarProtocol을 준수하도록 했고 -반대로 하이브리드차는 엔진을 바꿀 수 있기에 EngineSwitchableCar를 준수하게 했다. +기능에 따라 `protocol`을 나누고 알맞은 `struct`들이 이 프로토콜을 준수하게 했다. +전기차는 엔진이 바뀌는 기능은 없기에 `CarProtocol`을 준수하도록 했고 +반대로 하이브리드차는 엔진을 바꿀 수 있기에 `EngineSwitchableCar`를 준수하게 했다. ```swift struct ElectricCarS: CarProtocol { ... } struct HybridCarS: EngineSwitchableCar { ... } ``` ## 도전문제 2) where 사용 -where는 해당 코드가 동작하기 위해서는 만족해야하는 조건을 나타내준다. 조건을 뒤에 붙이는 필터라고 할 수 있다. +`where`는 해당 코드가 동작하기 위해서는 만족해야하는 조건을 나타내준다. 조건을 뒤에 붙이는 필터라고 할 수 있다. 제네릭 타입의 제약이나 제네릭 타입 간의 관계를 나타내기에 편리하다. -if는 실행흐름을 제어한다면 where는 문법적 제약이나 조건만을 걸러준다. +`if`는 실행흐름을 제어한다면 `where`는 문법적 제약이나 조건을 걸러준다. ```swift struct SortableBox { @@ -147,8 +148,8 @@ struct SortableBox { } ``` ## 도전문제 3) protocol과 extension 사용 -protocol을 사용하면 protocol 내부에서는 함수 안의 내용을 정의할 수 없다. -하지만 extension 사용 시 protocol을 준수하는 모든 인스턴스가 해당 함수를 사용할 수 있게 만들 수 있다. +`protocol`을 사용하면 `protocol` 내부에서는 함수 안의 내용을 정의할 수 없다. +하지만 `extension` 사용 시 `protocol`을 준수하는 모든 인스턴스가 해당 함수를 사용할 수 있게 만들 수 있다. ```swift protocol Introducible { @@ -165,9 +166,9 @@ extension Introducible { ## 도전문제 4) 순환참조와 weak 사용 -weak은 순환참조가 되지 않도록 참조 카운트를 +하지 않는다. -weak으로 참조하더라도 그 대상의 생명주기에 영향을 끼치지 않는다. -weak 키워드가 붙으면 항상 Optional 타입이다 (대상 해제시 nil 로 바뀜) +`weak`은 순환참조가 되지 않도록 참조 카운트를 `+`하지 않는다. +`weak`으로 참조하더라도 그 대상의 생명주기에 영향을 끼치지 않는다. +`weak` 키워드가 붙으면 항상 `Optional` 타입이다 (대상 해제시 `nil` 로 바뀜) 위의 특징 덕분에 안전하고 참조대상이 사라질 수도 있을 때 사용한다. ```swift @@ -209,5 +210,5 @@ func makeMemoryLeak() { print("memory leak end") } ``` -+) unowned도 weak과 똑같이 참조 카운트를 하지 않는다. ++) `unowned`도 `weak`과 똑같이 참조 카운트를 하지 않는다. 하지만 다른 점이 있다면 이 참조 대상은 나보다 오래 살거나, 최소한 나랑 같은 생명주기를 가진다는 강한 확신을 코드로 표현하는 것이다. 때문에 확신이 있을 때만 사용을 권장한다. From 672f59d4fd7bb531f8095f017bf3e588fe2ffd5d Mon Sep 17 00:00:00 2001 From: yy-ss99 <124860690+yy-ss99@users.noreply.github.com> Date: Mon, 12 Jan 2026 15:52:57 +0900 Subject: [PATCH 15/17] =?UTF-8?q?docs:=20=EB=A6=AC=EB=93=9C=EB=AF=B8=20?= =?UTF-8?q?=EB=8F=84=EC=A0=84=EA=B3=BC=EC=A0=9C1=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4f3cedc..1e61d99 100644 --- a/README.md +++ b/README.md @@ -114,9 +114,14 @@ class HybridCar: Car { ### protocol ```swift -protocol EngineSwitchableCar: CarProtocol { - var engine: any EngineProtocol { get set } - mutating func switchEngine(to newEngine: any EngineProtocol) +protocol CarProtocol { + var brand: String { get } + var model: String { get } + var year: String { get } + var engine: any EngineProtocol { get } + + func drive() + func stop() } protocol EngineSwitchableCar: CarProtocol { From 05e6e363062ebeb6308def5a3c9d4aeef9f6c93a Mon Sep 17 00:00:00 2001 From: yeseul jang Date: Mon, 12 Jan 2026 20:18:01 +0900 Subject: [PATCH 16/17] =?UTF-8?q?feat:=20=EA=B3=BC=EC=A0=9C=205=20error=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 38371 -> 39122 bytes BasicAssignments/challengeMission1.swift | 1 - BasicAssignments/main.swift | 23 ++++++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate b/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate index 1fee5635a71ae1b657b0cdc41e0fc653c95adb0e..5609162316e2fdcc666dd57109f834416290f6e8 100644 GIT binary patch delta 17063 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 wZtRP7@|?5}A_-3S$olZ( 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 delta 16302 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 u%+}7u;^6TECoMK+*0!b{; Date: Wed, 14 Jan 2026 12:15:24 +0900 Subject: [PATCH 17/17] =?UTF-8?q?refactor:=20=ED=8A=9C=ED=84=B0=EB=8B=98?= =?UTF-8?q?=20=ED=94=BC=EB=93=9C=EB=B0=B1=20=ED=9B=84=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 39122 -> 39320 bytes BasicAssignments/main.swift | 9 +++------ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate b/BasicAssignments.xcodeproj/project.xcworkspace/xcuserdata/yeseuljang.xcuserdatad/UserInterfaceState.xcuserstate index 5609162316e2fdcc666dd57109f834416290f6e8..41873d792c15bd39b806c8c332df37e34743b121 100644 GIT binary patch delta 19195 zcmbV!2Urx>_x9d9vpZ!`!NLM6#a(()5RfjtFR<()9YlKXP0G&2USc$>(HI+Gk6jbH zvG?A4i$n|92KJ;W6LyJ(1+!re%!PTd2$sQeSPko7Bjn&%I1Y}7li@V@Eu0PKz&6+p7sDlRDO?7B zfZO2?sNM;8!Jpx7xCicq2jF3N1YUyI;4OF;-iHt2WB3$4hcDq@@E!b{fP@aAOXv~( z2z|nc=uZqKoCz1gl^9025$=Qs;YoNA-h>|!N`w*NLWFy%`Hj`?SBN5p`jv>dA>T%>GaymJK{Dz!MeoxLL7n4iKrQ|wtJ-LD0 zNNy&#ll#d1Rp}#Od7$^)91`9)kp~5hsT&NPp2~&k>YGJxCSC}Wv7gh?Z zgw?_t;b>vAP%Y$y6NQt6t->Y3Rl?Q6HNu~Sn}u71yM=p%dxgh^r-kQ**M&EPuY_+! z0uc}~B32|8^%EJ228zr@79va0V9^j!s3=mT6sbgUqEu0uC|#5*$`j>_Dn+%T22rDE ztZ1BQzDV6FS}s~4S})ol+9=v7+9Nt3Iw3kKIwiU!x-9xb^iuR*^g;ADC8R_YMfIX| zDLtw`WkN|Q8D&n{Qw~%x6;3IrSV~DHQz=v`l}+VPxl}n-P1RF~YN6&*-&6Cb`P2ex zA+?BVrP`==YB9B(T1%~?woqHu)HZ5Ab$~iZ9iom=r>INRW$Frbhq_BWq<*6wQBSFt z)EgSo1WnRHT1@NEx^y4fkT#+R(o$MRThiXN4?UdrrTu7sI)DzOgXmy7gbt;{=x{oM zj-(UlL^_F1rc>xtI*m@Jv*}X0j4r1u=t{bZRyWgXnxn_k6X`khcl2EPdwL$dkX}T$ z)0^on^j3Nsy`A1c@1%FpKhx*v^YjJ!B7KRzOkbg|(%0zU=tuNp`gi&X{gi%3zo$RY zf72fs$Pf&}uuM;;7t@!KG3JZ~W64-C){G6~#<(*cj3?v8cr*S?fSL(pLKzhk$D}Z$ zm`o;@DP)S6GNy{DW@?zxOas%%G%*vHiOeKsGBbsl&CF*OF|AA+vy%CNS;een)-i{f zBg|3e7;~IC!JK4HF{ha`%vt6lbCtQqTxWh^?lF&;r_3|v59THFih0YtV?HvUSc0Wk znpO8;^;k1@5G!S6tT}7JTC!HGH9M4bW?fiU)`N{?m24uL%4V?HYz|w%7P3X`Sauvc zo}Iu>WGAtc*(vN)_A7Q8`wjaY+sd}F?d)oH4ZD_I$8KV`u)Enk>=E`TdyGBBUSqGb zH`tr(E%q_{JNtxv%03Gg6Jk;<6pO@^m=-f)RxB3liF=DBVl(j|u~aM*n~N>PL&T0^ zC$X#8OYAN77e|Wa;wW)~I8mG=P8Mg1v&7k&4Wi*h6!%W^QqWyGu z1P3ALgrJ-oyKx=$GXN=?)>@_JrkK&3W>#oQ#C|q;rq;u zPjto-6!#r>4FM<3Xx*W}QKQx!pefhur@5wE5A3yfM|JfyBk1ODcxDu|6 ztKh1*8m^8TjjIFwfIg4_17PR{j6i=d01O1izyz2AGcX89fee@f3t$PXfHklIw!jY9 z0|zjeYvh`^W=_p<9O7EIahj1PeJ#1^+zjp;PQ%UQW^vzgv$;8(_c=kVpqD@?PzmCI zv({)K8Z)JX#x`;=4cxVYFkUds&(UpIP=Hf_eXygulfAQ}tE0VJkYj+oQ&528P-i!% zU{`m?e;4MX{ceP|uo-+|0a}4vEBK2SglYxRSTIBLTq{s$HTKD|Myyt#)a;3| z(U?bJLA+KFr`4Fk3sSU#cx@SfM&U9tw1PyfMtn5Z$k7UtwSt|zpo3MZT7fhM3p)6e zt`$t;1s!C{z||(wpo2-7+D{b<{Ha=7V768;Fcu5OY6ZDk!De1#l2(wf6^!9ErfCI* zTETC;K%*5DV?inn=4fw9@y%e(PfFZ}`C37_R=vLptG8(dm0FD!71mg$6;x|A9`G8g zw1Qf#MpPWuSg#e-Yc)2;VU3@(f(EU?aD=TIYz5l{u8S7&6zC!7Dd+`uf?eGOd%)iA zf&<`Scfk>Gw7cL0IN4or2AmVPwt}0uv;gUi1K5@^s}&>s%yE--n^Z_ zR^0`*&>mv}?YOzE(7=J4*UkIkP%S~e$6>Y71-e2nf$I`D47x#g=m9;s`P>3-A-9NY zT>`zK4;&7Cp&!@AwR1mmKXIFRSS>W=&PF0tMn!IRm1d4}wx-N^2(ZJ#J{mn2!;zgP zhG8(gd#mJdgurz0m)HnYq@pY25uv_Y2!W@eV~T5NzoXq-zp~#X5EAO@I^s zUC$IjOe>tqZQ-oW!>{3VI0M)H4b;GyaF*u8FjJb_&TZqia#t|`MVf3kT~qiSoG)-~ zhjZcga2~gV+sW-}hYR3BxQP3i+s*CKeD9VY377N5uHg1^R$cY3f*S>{OW|s`2Cjwc z;Ci@$+sEza4sZv#L)_t|a1;DdU?;G{*R9+U?kFCokK^kJ&Rau!m}~0Y3&B9m8aG4D zO?Ml$F6c1QKDd7ocdWxm2jQW#&qngAsK}^qhX(~y1*y7%4&|e8{}1pOJPuF5lkgNg z4bQ-{@Ekl3FK{Qh)7%;EEO(AO&t2dya+kQv+!emyUhp!!01cq3i6*XJsg+Rxju_@*E=0Yjs`?<(RBcSTSXlSh2{1|TLQvoIqUSJ&7W6B`{E7obXy@{O}1BJ$IV-ObI2>EVX4zj2Sa$K3BL2`hm; z{&6Af2z$aoU{4IevHA)39RG~v{zQO4fW&zm5aQfzVNfiHB789Gh~eB*&Poe8;V+0; zOau^t{J}lr{?Hy)dLUJ|58cU2B9e#}=(iDaoFcy9UbYc2go1m;y~p|D*Zl`-N-b^G zBZx#^Bc4d$UUPr75lKWc_lA4Ry-Uj~&8#lQBSmC(Np4kMa#4Osc34SPc3pO5Z-FTJ ztByuw2x1oT4Z@x*xJqQT39brKyDHBi3IzJ?L@tp>t!0QK) zdzY@c6VgZ%m4aSG6;Z8O9%!mY08<(lN7NE^BchaXabbaNM6Dq8EHN5uH4xP}S~yf! z=Vy(ougb2B*43TqkxW0T3*P_j;cbhvTdps`1xS6f776%&QeQ{yRiFnFyPAcFv3!qP zh%pF=5TM$KWFiUo_zm|iE~k_z%EE)bog{k-@hy+%RN^aQ8u2wTotQyzMF@*w+I+voz@ToE8;kDn#bn^agsQNzyJgWB4FH3oFUE<#R!-n zV5-GPb33GoCaz%PU&Rn*hnnI}3(gWZu;3;ZOb<03!kc`zX@{k|%zT%)-(lu^S~E+# z)sGFVeoVan9}WChr-9#h8u$}$VDl~mTYWb05I*_Q@{}a7g-H?ti%tuZ6n3Y@BrUMx z4+Jc^0m57`$1TLc`i3H6La97#iR;D4BqG$u`W z6XJ61wI)1EN(H@08Mc;5c!&8&ODwR$g79!t3v9lwI&Db@zD_$L0pS@1_Qyj+G7lMc zNDUe)8Q@F~(^{2u)mqiDn^m!b+M5i;RwaD|5u~pmQV=Q#7K8}G1mR=|0z)}t1Y9^% z&VcK~>2pRL#(daHGK>r-BgjZnPDYW@WDKbwV-aviU<3k{2+TmB6@hgK>_Ol(0ys|o z*)2$t+6e*z&gr@(Ir*CQT3gMtp-!5621YuhcB+7YYr1X$o=)0pKe#T|*CDl21_a#F zb+fed%w$8u95Rb6<(r;O=8(B$9+^)TkcDIsSxlB7;DLZA0$vDsBjAI;a0Gl2@I$~K zfq<1{SqCA=st!Vsbvz*gy9g2bnGmW@k5iH3c|J@)AgGHElX*H!!E~5HPD3D=r$aCT zA(#)0uDA;w4f!pP&P;L^0$~V*w~@2SIS51`z)!(DLaNOGaz43;2PuJE$a`KS#)xd= zJx`96<~bNzE+c=ytRa_^E69}yL?aM`fTEpTMXu&qgN?8J$MMKbm?%GDqKq8e$($`% zuoVlY3^uj=7jt%yKX))=mzEiE-D<_m$UZ=x=FNMMJVYKQkB~>nW8`u21bLFg&L58e zCR`!{NeE!Rr67=sKpFz+2#j1wp6N92g--Kc;mw=TW!|jM<}L3uuabPgoA)6Cqq@xd zm^bh5^wE3^_0 z#mEV*g*HN4p`FlP=pY;{93pfSIw4SnKs5q22-G4_hd@07qY-F8pb>$ll|ttZgh@ioqOk}}z+LEci&WuAVJ5GZ!5eEFZ>%gnwvGRfWJ6E* zq^s-#VF^ZDSSTzKV&9mEz$64Fw+l;!WxTIUL15}Xz9Ou}0M=pG$Qxve$%_$fz=Fmv z5q0b5Yq?@%;J6+4Cx_QY%#OsmQeTUX@k@7bSJg<^kthf|5{2p5ql8(!ACK<YnfTcV#%Y@7M1A&Jg~r7ewD zM@`07z_6Xc%4fe+p5tJt$$cMnbeW?3!?PR5u$8*TP2mOMW!!qAMR-Z;MT>YZ+Nt%T z@4LXdDg5n!1nW^JSWi2_`jZE%tqUxiaCRniYyJW2H4oNb2()*BHT)e9)_d$m_&{JW z??(89q3YRbOA!Imi6mcI@bErs<`fw@fBvXHzk0%68_!!?WQ2A5f2q4KkATmQ|Q6qCq@aR%^+kNw+XC7FmgGwSb6hw1BL|fQSZZ0a=YZ zvnO1lb`;_Dj{jvm5_xyvA@URXlWhWfQ4o*E`Yt?vL;w$gaz3j4{235Y7zRWXj=+Xa zKtus@42UR76wMz9Y(xM%1%Jkn%+VEgfignG$2L*C2>0|S1U9#cl0-OaZ9!oBzr05@ zQpCqLB0)5YAM&^Iy~RTqw%N8XW>R{6E4m6V5b?o{{6v1_hci5u;SsH%9fMgWD%WDU z1A(19oK+a2>MtRhwzS`eTOa);*=wFX&R83s+^WU14lCDxsr>f_o!ibE!tN|Ly>?;J zU(@`suGE+Amb8nSL|g}Icp4@`V0X8EXi*z4n(;rP_Dv^h-*$MBXfBW1-Y(P*eD84>2_IlrD!z|*$<*s2pmMt=RP25jdi?{ZZcVyRa>P{?eB1Lk9ieAq{#wG2zvW z-{;Q3gus5Z7whi(Quk|d|Eon$qt0zgGVHU#LV5S!esoZDgm3C0-j9y+esq-gqZ1u| z)XT=uSae!+t^<*?T0~Cqh~UVInRTMmkFJRB{f~&;??mJ`(Ie4g>_<;{M9y>}ash#x z2;AcR==ML5Jm(?#6XDh6j!{Sy@QR1zwdgPYK;Rq#=R3|Ak|bS=E>J#FICEbbt1a4qBsR4ps)W9zxLi^_$zL$nR%-uO@yW9L9tQ~ngDO0R$_N8+4 z2^Z6^9{Js$pJDfR^y1sQwSMH#nLN06HOYdq*5XE4X>q&LttWh1r=|u|9{(F~lxGKU z)bI{hq5^o}e(3`4!Dm znoLchrcz%a@B)FC2)shzH3GQzZxFyq;yVQ1Bk*A*^>rs$noh80^I-km2^Pfe(2+er zovsv|TEb(s6oHRjSgqipS}CyO4+K8(xdT37pr|fOuBSHfFm0eVA_x$KZPbs{PY4nS zG959`irP-$31U07gW5^$LXbpIh@hyQ+D+}jnKYyjq_N4dGQZqI9mY01f-~tGP93vO z>Npmhzyf-xsl~r6cN(_<*LwyBFo<2YjXIBWdMMVeSICDN45Y47H#$sKxy%ymIR=g@eUsGZKG^XPm8y%6+9(5Ia) zq>E@Jg2NH?#pP+9q|EWHrtAMpb2QyRHzMedU;u)FoVRrNA00tAQ($Ti1*T_dge}xU zkJ)%2)sR%<4F$Z4Opl|-r+(hXz<^}5W6=abY6mS-I)MwmF6GZWtnrADiZPt{*BJh? zk;{~UxZU&-zTiFdUV0zBpFThzqz}=D5yak`h+qhP#x#ya0jvw2<9MIf#5d?Y7oTFLuf{pNHrg`D+fQLU-F#$gMLo`Nxwia7r{IP zF+(TMQ%0B3(|pLYC3-V`G&cEj{QEI@ z?|CVs&qx>p#*i^$`XgA0U=@PZ2-YB2i(uVSfjwi4cL-b(fCj>v5Zn9Dk|0)#|aR`o`y@DrcoDp_>RB>9TU$a zFo_H%<9GxoAvguWsdx-vQkgVdOuE31$w&&z!f`r3CqKI)PP-?C-~>Dr}aVvF{i)RTrO2$ zKJPYnT%j3UW(6i|63T*&+L@&S*EVJ`vjo8f2rk52`QPsJA7%I($a;e6zLfYdTbB;NWcdqxq!^{N@g{+L= znhp=T#9U5}Qfk={lTnq|#$3^aA*r3Npc@658_Z4S7N+1GoJm34pN$Ca(sFPEcU*Iz zW|*3}FNkSpeq|mo4-pRYa5I8i|DoSw=69YbKO*=OW=gkc&_$c)9kkh^r44@c#y_Jn zKhqDpU2X}#om$zY_qs!GTX(%d|5DUGuP~i?&wLQ55Zr;_PEL@n`}rY0M%!^#zyi%Q zZ+&4K3k9kCZv!zkSdta8qNFlxiH^N`1a~9&bGoidbEdb2rn%0!FT=9Qfg@DG`9;~h z!P;3dtD`wsXQAqe-Iwi!;NH)JH`|*v#NmkT!}ewSvHGlp#VOQ21otC&06`4#Ap{TO zaK!d!2jCy$jv?p>f=9LgkKr-GuYQub4eNlNg|%hvSe$iWQk+2WWIH>U9fD`Q@DzeL zi!ReVt&bcs4Cj6(4x91KA)pm>t4~GLHqpY=ov@ z^g%TSZxnyq1L5xj=rbp&r9h@%kB6mKJV2f@1t{(|7W zmHdQ+Z4kJyO&tqpEW-I9-kwJAJ|Eoi{IPQZ4gSd|gz36wN^K(oO0%+qvNS_Xg__eQ zq-J%ay{0{ApoR#3s$jq75u1+Subp!iR>Lm~{O9soSNrF(^YPSx{hr171opMx+Smmw zj%JS#`~wf$c)in#UCb`Wc|5y>UCQEM^BBS35q#3lu3%U4bC#zFK0{q|7B#yb^JBx8 z^S=LB_d3h|h;@JZQnzbC?O*F@U9H{9^6TS70=pg0aN%?=4%zP(vlrP*a1(n4!S{#|;PjJVIPZkW?3}6*`PsFJvH7`q+TW5QGwMsLtK=B2 zblraZ@LyJxul?k6K<(<)ZT3E2+a2~U`wM#yXQv+!{2RfK2!2|OX<|ntYpHP@Pw2*K zA}YBU_7C)1VjXZ2oe!OM2HYUA%e!aX~*=p^NMrR zj+t-g_4!8KYBlIB))Du_(;jgTM6j*mUWgED{I~%=ec=8!abGbWEOZdj`*S!F8;A#B zT8ItBM&ka6z+dW#h+ggDfdUt?2_keci3vSSA-AfKEU~2+FGPQ-i_<2t10wqHx_!BK z{}@l|J0s!WqoH`H*tz4GvQC?chl$9Iv^78+ z@?Z6b;`+l8VZ_(ZKeaKB>u(V)R{oc&N?C`vWENV7>t6@HVo1vXr zir-{diCBp^NNLd)Dq!m^Q&0Ij=_)GPhek&1!9PwlNX6c zizkRDiKmFa62H|E>Cif?j*d>LPNPn<4yV(ib6@9AotHYVb>8&Y(c?&uV?9pvIMs7@ z&&55L_FUdmy;66OuC4A+T{qnz-5A|iU6t+#-2}WgnXQ|vo3C4_TdZ5ATcO*kdqJ<4 zUZh^5-Xy)bdh_%a=q=J~(_5^!RByT7O1&^l1q{+l53J1l3S8H zl3yhEB@ZO(-z1MEPbAMI&m}J;uOxp--b&s}{+4_)a5L~Q@G|f*@HOx^2s8*b2sH>d zh%|^Yh%tyYP#KIcNH9n;NHIt=7-=xdAj=@fAkUz{pva)apv<7jKy82w#u!{MxNC6F z;8%l(h8~6?hGB*ghH}G&hN}$M7_KwiU_=_}8TB#hr#6xphIIvx4(b?nf+V)xA$Mte_8*x14IL8oI>afNE=W%pm;#(fbs$R2Am#n zcEI@o7YAAmbQw5op!-12fnN=rJ8<5>1p^lid^+&`z`qB6G6u#<omn`k!KY^vEbv)g7*%$}J&H+wNCXi)4R)u0iB5(cdt zw0Y3hLE8uIl=hMikPeg@OHHNrQU~c^siV|KI$Y{2^_NCVW26eTR4E-P&5(|gW=YGX z71By+wX{V#PC7w4SvplZP1-7LldhGnldhL;lnAgi8Oa99Ok`#<2iaiR5Sf!~xXf4PCkv3p$P}_znM#%+ z8zsw>Wy{nRvPxN%tVT9QHdZ!HHbFL1HcR%cY>sS+Y^iLSY=!J6*=E@m**4iB*%}(vPZJVvL~{4viGtNvXACs^Pc9q=6%fjnM=%N<`(8w<~HWvnzx&; zF<)oC!F-eXPv%?9_n99sKV*Ky{FwO(^Hb(;EG#VI)E46`Hd*Yk*lV%R;(*0ji(f46 zTRgD%&Em1e6N_gS&n;e9l9nP%+LE=@vFvH7YuVefucf}Fqh+LJspYqp`z>!-zO#~A z4Y6{xaY3bs;OsjT9x;;lwnWmsie6 zyVm!tA6q}MerEmL`i1p78(?E$<8KpZlV+1)lWCJ}Q(>dFK{jJ-#@S4;nPfA?W{%BV zn|U@1Y!=zH*(|nMYIDryfo)G)XIqu+Xxm2Hakk@aC#r2{*e_IA#8-gd!up?0Nqb#|le7TK+^ z`@!z8-5I-cc2Dj8vU_Xa&)(SH)IQxl&%VHZmi+?zMfR`lKRE!0D2I55M2A`j&S80Ja+9y=?ACPPHUakJ8g9O(P^{OR;TSwJDq-ZI`4GR>9W&Rr|V8Po$ff@bNbck zH>bx=PlmEXt%u5omJZbn-8%Hf&=1c2o!y-MoCBSMokN`!&PmQGYUecPkvz&9C z^PLNvYn>aNo1Ho5an2K*Cpk}XUhaI%`Lgp3=UdKqoPTwG=={j}cjxyml#7l_KNo!$ z0~a$F3zwlT9xh%kJ}$m4AueGqkuK3L3YXC?t6WaFTy*)x<+aOOSLn*P_H>oF%3O!J zdbkF-M!H73rnqLfX1S_!U5i{xT+3W5TV&Zg<_~y2o|D z>mk?cuD4w8xc=gL-}RyEW7j9H&s_g>ed+poSf61|!$u6N8#Zs)-eJGG3EgCFes1Az za<>?_Shr-iEVmrDJhuY3BDWH^1~<-ajN5p(DQ?r;X1HnG*14T?yX|&g?e@U!k=rx3 z=WZ|EUb_q3Dfhna{oRe-&D>?~w(bt@j_%IxuI}mXGu$`0Z+AcJe$D-+`vdov9+U^` z(Z|Eo!`#El!`5Snhm(hk$1smz52Z(*N1;cFN4ZCpN3F+bk0uY!V~odmkMBJecr5a0 z^H}V$%wwg;DvvcD>peDl{OFxb1P*&sScgm!6ltm!a1HFEcNxmxY&=*D$X@uSBmDuQaa=uS~U9wpXrK zzE`1Fu~(VbIIoFbQ@o~m&G4G(HQQ^h*L<%yf%1k^7_eZtGA8!FmHEnPj4UZ zAH27CZ}Z;a{j-mS&rqLGp9r5QABB&~C*CK?C)H=9Po__fPlHdh59ib3GuCH<&t#ve zKGS?=_-K4)`E2kxjN$5W!xs1`@>)8Py37gd;077_w|?f8~G3PH}#kLyZL+id;1Uf_wx_*5AhH4kMNK3 zkMWQ7FZG}1zrp{!|C<2g0RMoD04`vDz|w#f0jmPm1Z)o29k4IpV8D@p;{hiFP6ylw zxEpXk;9QK5>^gwW*B zw9t&u%+RT!yFzb;J`8;oMu&;R`i7Z>Ifo4k^9@t`hed~}!s5e{!qUSs!m`40!m7hs z!e)of4VxdfD6BnfY1oReRbgwxHiZ2cb~Nln*r~8HVdugwhFuA}7Iq`-cG%spdtpz) z{s?;!_A2aSI2F!@_XyVw?-SlHToP^=ZV_%9?hx)6?i%hM?iKD6o*dpBJ|%p5xF&p7 z_}uXM;fvJaZQ<*~H-+yBKOBB6{ABo<@XO)X!f%G(3I8Sh_wct7IuX4h3?j@U+#)<9 zLL=l6F%im$goxybw1|-rr4fx0Ga_b2%#N5FF+XBaM0>>2h!qj5BGyLik2n-@B;r`a ziHOq?=OQjdT#C3FaXsQ@#Dj=O5l*pA#!iIzdT4DDwoS+qAa4UqwJy_q9US7q8g&OsFtX4QIn&-ikcqvO;l^t;;8jeTcWl{?TXqH zbvWu+)XAtbQRkwrNBtJ{A?i~!9o;Y5D%v*MIodB;9UL7N9T}~NRz=50Cr0N*S4U5d z{wjKUv?lu7=6Hl{SDF=kB6_?SsCQ)4tS z-^P3wGcRU=I%ZkSrkF!9M`O;#+>Ut>^IAbDXoXnOL(yB&Php@iQdleO6z&Qig`Xl& z5vGV#L@N}Ek&0qPi(;H&qGF0-nqr1xred~Yu42Aok>W?i7R5Hj4#h6T9>speA;l5J zam7i+X~h-Ab;T{k9mONX3&m^2Tg3;(r&th6#Hxj{y<;V@MzI592gRDlTE*JLhQt=c z*2Xr*Hpima@v)O)r^Zf;ogcd>c6IEg*v+xqVt2;wk3AH7H1vTjKaaRM z;_rB)cxk*vymh>7ymP#Fyl=dJd{BHyd{}%$d_sI`{K)vs_`LYS_>%atcuoAe_?_zb z{qcw5kH(*fKOcW7{%ZV<_*)5df=5DfLRLa~!q|if3DXniC#*}@n6NwHK*HgKqY0-H z&L*5sxR`K1;X%U7gtrMF5z;-ti>iPI9NC(ch?oTy%wxH55d;-%HcP8&n-j{qZ z`G`9Cc=E~Q)5+J8|4b357^k?Tgr}%dic-d4rlzNUlR77LLF%H^6{+h|H>UoSx;1rs>fzK=sb^C!q+U+F zm3lYze(J;2M`?Z1{L+fkYSQY`#-&Y7`#SBLv{`BDd1(vN+R~P!ElXRMwmEHg+Tl@` zMqM5C%c$q0-i-Q`sgr4#IUv&{b5N#vrd6hGrdy_Grgx@qWUW`4*LXZ6kMmnF%PWw~UzWqD@#Wcg(UW`$&hXUVhDvPNcQX60n%Wff!S(&psXI;+roLxD4a`xvO z$~l^IJm*<%&)h+|&bdjsxw&PzmAN&!^|_6?<8mkFPRX5?tDcdo$z7SdEB8|FpShp% z1bHBj$TQBf&2z|e%yZ5gmgk}>y@`E?^fQg zd{AXrHK@wE%C2f~l~a{-m0wk0RY+BMRa{kkRaRAQRen`bmAYzbmHO+d8C5f@mQ`)4 z+FZ4*YDabdYFV{M_3-Mr>a^Z0n>>Vws%s;^bwt$tb~s9|b!YI@b^)fm^<);QES z);QM;tMRDut_iP+tck9Pt%<8is7b0xscEd4Sfi)*08?)P>eX)J4@P>Qr^{ zbxC!pb?J4Z>Kf{r>rma;x(RiY>!#Mts+(80u&%9cN!_x#O?8{=w$<&dJ6d<5?o{2` zx?6R3>+aP(sC!pW)wA_I>U-6j*T>b5s;{jdUEfsC)sLwkUq7jSYQ6gF`fuuI)vv5y zRllZwef`GzpX#^P@2KBZzo&j*{ek-5M$@CsM~93q96e+7kE73ze$k-YVAwFA!KA^g z!KPtogKL9(gIB}w2ET@=24%yDhQx-nhKz=+hMa~;4NDs~Hf(Fy*|57|U&GOc6Ah;u z&NW3`(v~fk_PmS9fcQ)>BJkWTk@o3}m#%qla8=o}( z(fFeAP2;=9zZ*X_^=xu!@@a}|N@^-^YHpg)G`Z=krs++Zrg=>Zo7$QdH!W*g(X^py zN7JFETTQ<=y=r>X^uFn1GiYX;b((uN>o)gp?%V9t9Nk>eJf(R~^NQwG&1;)CG^>AX z-qO6ic~|qE=CjS`n=dwBZob-lz4>PI?dH49_td@B{_0Zo0`(E~Th12$eT-cEH!+Iw zU&N^7s<}z{Pgl(5=HfTe7vgunH{#dMx8j$g_u;pi4|B)x>&w^h3$5=FiFzO-WQJtO z64@X}8J>mq6$=v>d>C)TM1lc?GUb40rjS6<7vBt#S zjfuUN*o_)vP3%Vf=I(-deSN>*_xpb#cX#L9xpQZp=bSTV&YkPLP4M&vI3pW4&&-*s z=>oce?!Xk70ZU*7{6PQ+1VJDegn-^46!ZaoK^TYxO3)v~g9I=Ds6Z-61Gyj%2Cxxq0^7k3uoD~xzk(Cs0=Nh+fy>|u zxDD=Tz(3$U_y9ga2?P*A0+Nt|G~}TX>VPg)k;e2vfp_uqEsWIpIpU5&lFl(TC_ugb}fXg2*QFiBh7Bs3q!% zdIAw+iHXEa;wwT+d_ycCHWNP*yNNx-Ug8Mx3-K#)j<`fzC4MLF68DJv#2>^n;xCdX zrKADbiR?^vAq`0*vMbq*?5-hANo&%EbS7O$Iq5_ClD)`2WM49j3@4*V1v!u$L>7}J zWGPujmXj4^C0RvQlQpE8Y#=q{cya`6v01d_+DbpOBir$yelS@*naeMNkYSr3|P}lo4e{ z^`y)x2g;FhqMRugN=|uDeW<=v7!^+SqavtCDu#-qQmIU87?n#EP(@TJRY6r#wNwMu zM72<(sqxfIYBn{8nooU0Eut1vKT{!m8L*b_hG1En<{c#_DA+7_85DdJ;9!2PqC-jGwfOR9DAF+!~V|RW$&@~+2`yF_9gp@ zea-&EzUK&zHD|-wa(0}Iv*&y`U#=JD$N6&s8m>1N%Jt#;aS7Z2E``hF zvbbz6pDW;sxpJ<8tK`&NEmz0YbBG(ojpoL1W4W2!Y;F#>fLp{Z=9X})xYgVmZXNeM zcbNN`JHq|K{mLEXj&aAi6WmGe6nB-o#$D%ba5uR}++*$u_mq3az2aVT?|Fu2c@4+& zyp%WKjd>H^ly~FZc@N%`_u{>IAKsVm#Ru|1d>9|j$M8zNKOfHzLKaQWl&*Z=2wftOu6~CVUf#1gO;`j0U`NRCr{0;sl ze~Z7(-{F5x;P3MH`1|}H`~&_m|AK$df8ak#87V96D(xoiF6|*TlUhn0q>fT2sk78g z>Lc})21@%$Bczei1nB^2qI94%S(+wIm*z-wrFq)bbYCJ-7_NOtFEQ^TXoU;}yNVy( z5bS}V3_)K62MC#)Rx-N*7^V#mb=N)#b9A4YUH!{m0pCgPz)t zSW@(<{_gIE+A_WyUnxk09)jgi!^}^o;=A(NHK9_eq*iy%dZ^*&mp$aWX`2iH~9ZKa{FHo?e4d(N;?+h*vaZ8j><=5!adlZ?YQ zE$f<3Xm1(q*ZyL>zl4zZua?9}VkPe+(GsO3PNIHhCU?KDrY=l@L zZZ#kQ1!%wk7I1(EQeXf&3H^l{VXUxB*eVz%Om6*B2 zeuMBt94<**0{RK5g7axfXGs?jB}rTgqCt#!2x&sP?r=8jWoX25XC$3;brM06#JCj< z1cQVj!q8SQ7$ghBgd(ghm8uv!kPe1OjN3p4$OKtJwvZ#_wt=Bw7|0g#gaV-uR~s7C zOPl29qSXf3Xh0#p>u^w%nULgBTU(Tu)2Pm`8DMDm{MzLi+^*Q~c5k@VUwZ%`!mxbjmmWco9 z8j@TFHLa4%8c9~iuxderIIKEQFBA(Ut)LN%5K4tIVR%MqQF*?iJTJc?zh+2YMQ&|b ze!04TetDsKxE?f(Byq9eY(y=Uh1u!uAThM>Xmu=@AhtRVj2Ehe>i=jpxuBvnuSPp? zps@x_2lM|=9Dmc!@glGoEWsSNVUE@995)C^7=?e2#(anB`?o?Qd8JU>LGl`r* z@et|+w|e|hFE|^z8%jI6y%}s3yS)YcAT$aiTEUOtC!tAb(Q~W;yTCq?<4nwQ7G^kG zi;pde5X}?ZLNMs`Bcgf^b0rAF|BD|Z@{ladxt$ZHV{pHL>v~SE zVNS;U$JHVmso;0;RAl2WxCicoKfnXlQ%4`?jR7Ur}#VdEj%mSa1}o*nJ>gHbw=VI&55X)BaLJKU+Saj!*{hf0|8e^Gg; z(t`{$V5Y=P;tq#mke9cEyhhk8PEo>^Pbv>{MU?Y|6&)xSiYO1qC>O&LVWr@q6;=tW zG0X;rhK5*|bdC*HLA8ivHLMZ76V|rET39En6E?IfJ#2!S|8{IpfCwY?y|7-V^l&Uj zW!#sV{7=i$!DhYt^b?}7;6L|k>!msOiqz5a9kKgz7-L`cl|cmC0zls*Mc zg)_wNO~XWQ6p5Y*8ih?*?Y~fZctp0xM$bpb(B{E!^lZ$>Z2W*#9?ry9Zt7rT3H=t$+u1nqFB?CJY-|&L>R@B1$i^9;9+5hu(K5&fxig5guNY1oPgN;#VIBWWQxv5$Z3OTK{h-u?8ZFo!R`lM!th@H z65gBSV2jB5h^?dUJ~19QVN% zJHcYG54VH;t8i90hku{{1U6xS!6rHhKevNT7-FyqBciK#2uB3BU+~8-80__iR6E>+ z8DW7tO!Oqog`>i;R>G375{?U}aEGyn(GW7iQ5;Vl;efsE2|OOc8IR}Wmx|YYeMgJ# zg!g~j3gJWeVp};aoYC0|5g_S81bzwoxS!m2{_`~MyQNv*q@4=EQ(0>MX(9yI?fpOM z?rLZ%uIYDu?a6rws|Gq|iH^v$-4V_2=t?*dsbhnPz-(OjkKXGX5fMiu|DV`MX=fvy zps+)6Cx&1)F154q8)joA{{8#EY~+Y+m<`j8?v@i( zA{P}zrEpca)=E?pHNth_R=esG4Mg)7z>XwZFt9g-n|feJVX#Jj36|Ft2U)+dv1{f` zi8cJVbm1Ya`ouU~b^MoAzn0l)ik8KD&3N*(@9b9(u)}ZfT|6;~m@0N}GFJWDSoMi% zSoQCSs{h|JFRbYp(JW%Fo`5-+fV(0A)9?j%+RcGjNUZ!n5wNPAfVIRr;(JWM228;H zb^;y>FNBx)_p5&i*dh|}gYZWO0oWHUCAJaU#Y1=?xc!Mg{=@{N8#;D$cpq_49OHiC zfbd9o+)5lG4hv6&zd9&5N}T*}??apd*~A&)DJI|<_CCaUjO&Fjah=j_@{G(|(P_)K zemm>rm8)uzg3Gw-l`pFvemJrBkiTOZcCbCVxtzRE`iX*6;u>*N#IugLfz9!65zpHg z&*xuKz$s;69_{83)G@dR#3MZ$4>23B|Kn=W9EK8q6CW@e#B<^W@sfB&ye8fdZ;5xr zKg4_Ct?*9xM|dxM5I!OxK>%mz@a#vdCO+yJAqo9#Kr#|P1V}w42r&Bj0D*407$^xO z_P~^o#t2aDoRDUi6SAkojqC~5B0vjT@k5MAJJuYeEoqN?P1=z%1Xu*PR?>lVM1V(l z#ijF77Njfbp@W5V7m5*(;)sLv66PadfGaErGjsGKgD`ERKN&y~LMQLq_9r3@%R%w{iHy1Q|!h>!2k23sneo|Ll$! z%zQG59D>0l2b0NU3aKJf$uu&Z%pfz#EClfQO%O0ezzl(&2$&;afq*3fRtQ+HCWp2| zn%fR(p$Mr>2c&i#kb1O3+P_wWv## z>f!nZmlxpjj8vPnf8kn0wu(1h3~)c)uKFMM<5=73L$i;p}Y2-gSEEa z(NO!=Axk^n(OrAO!9~*n>`C&J#DDQ(u@kzOk~~XZmH4kD&ynZJ3*<%e5_y@tLjHz8 z2m-wk2t}X|0(}t(Lm(W1ek;jq&n**z$h;`9RTO6MdyU9(hYtd116uLQyQ zEY+3jMs=5Tp?XlplnG_3b$7ABrv@UBh`;~@%Kznt_m_nq9;bR3`7op7b{3S4#J`QQ zq^u}w1O_3Hguvi7%9gUDu<|4$kb;0p`^=>%m2wqt>V^PLW^`QbN%>3sms4JpH|0b5 zQoSh5avB2Z2xK6Ti2%04A~iPD7F^tfwJ)e0i$fGEp;^0Cc4tv zWAY+ximN>_)X+|AWFwCFb09K`cIs40$GOLI&}Rc4(E+q zsZ-Qx1jZvUp_MvIokL(E0#mTF+#M5}b(y*<*0>@%;7Qm4Q`bZXJo$e(;I0xnV`@jk zcc}Y#CZK+&?o#&~o=1g5u9e^3v^nP3J2Ge6A))HAGIe__vm-cL6ZP%m)#B`%xz z+jxu7xwk$XF#>5Ft-qr_=sZ02Ui9#@v4^Lwi5`Bk&cmDJk#rY~Jx$Rx&Co2((L61s z4d_lZp26oLFb{#R5y17oL0|y_3laDhfkg-`UQHY7=TN%4eh#HgMeLV!VBgj;hkoCV zd_3)lk*A#yXl+NHmSf~a&mjJZPC@tA;aq5Mx)<&_?L+$_uoQu1t+XHQkHB&SR_Oqb z$)H2%KH}i&=uj~xS%C*fhlzt*`9-j1sB8y>j-nM9ZaSKdp<@xi{s=4CcWrbWtrX#2 zi@>^1aML)cOebM@w+HFqrc-cPh0FJX{v%GI)9EZ7#B`e8lJq3Xu5!jA_#!2T4dL}*le}OiKo-2a(69U^r&`#4hGNEx~ z^55C!grbZcHuvLCEq}!fHjJxZfCF=S5w5xzWBGl^e`482FBki=RJ5TT*oNpZ(S}xv zHY8$c{vG|j9_w`?*1NvIdJBD0;{Uy2Px=RXEBzz=6TOYzPVb<1(!1#0^d5RIy^r2c zAD|D?hv>uf&-4-c7y4KFD1D4RPM<(v4+1z^!Or0j0ysGN1%aao97o_J0@&)$B5)po ziwIms;5P)WA#ekMTL|1i;4T995qN+!;2{E!5qOHgUt%v#(WmJ%^jZ2GeV)ERU!*V5 zm+33?Z}e6A8hxF|S%K?*?{K?Xq; z+d9d9QKHaGe%DEyZLlOkFS)0aOcfq`M zU^Ihg{w2&91l}&ei+=okW2m8FO>JReevLXmFQTGcjUUX2PD6tOEoKrk`SZ)CG1EU6 ze8p%#7tCSielD2LeDk^BTV~Pcf>vhffAtA>KqE$a%t~g}=XJkh)_yKn&usWyu$kHN zx!_0Ur_TjDn4O;s_Aq-t7aU*?YCf0z%pCb#aFjXrx!@%8`LcyM%bfeX#zp4R=Yrpu zYZBun%vA&pmoV26G!lkqDI%j1vdi+5w0+X7^6p?yFX<`}pQ3T*KJx%$CCZjCe2aS7YG_7Xo8?=8}o{J&AdU-3_(i-ZNynNZK8(x z$O7Chi@i?IB`o$j<~qgbmt9ko8(vdWR9G%Pu&X)E(vmJL!?G$II;)Gy^6^?@((oV6 zBYsBELKnKTJS)Wy7bCOP`K>Jf>B%75iNztv61FpfR!dkz1g$@7zx$^f=p$>khZw?M zP7mm2!kUTKnIdSrgzbs&1CUTG_tfZnV#Tsz4>Z-U^3UQPw2z#%WnCr4t5`c$#@e$E ztRw5hIrf?)`T;|4|O9JN)sR$A$h+OTrA`hQ(g!>ZX@1S1fPL@-JSmGyn9j~jC(HV#l? zbDAB2scd4KH|-f>MrxwpPLb;rs1WVW{>{M6+OAzdjmxVAM!34Y{)GZ3_u%?ISs*CE1)Qy9* zBXhfIi*rY6WMQnnn|gxh>IojVW6_;>|-1?X0T>^J(AV@Kb< zWmn*A0lSD@%r0SD**115yNq3q;6MZiA(({VU<8v9OhHhEVCqWD`6_m`#1DTjmiYCM z=on8!gcBwjb3aJ@+EkTi50baBIOVaD-Olb{ce183Hy|N#y&x?48d{)EAS8P%)%n>4f|GNj1w-y zwL!zpwN}HK?(7Fnf;|(9E~;twFGQfDzuAGG=%JJ!$;a ztRzS6#o;l5lQcCwLT;UAIU|Essq{4H+|9sOG|`$K(Qru*EH^f7lS)m7loesOQc>>b zQBz-3pf;qnNk#6Z5>{d)v6pyAdP|gepGTTxh$L51CaI8&l8li|l+2SXkt~<2lB|<# zmHZ^xCD|uAg`e=Amt2zElKd%oEP16@9SHQ_5}Wq#_Aj8{w!rb6R5YNz#XYn)i@LD} zTqj9Zhrp<~rC%4$7;86Y$Qf~6xo%u{t_OnHlc4F_Dr!=-*(0195`3ZGUv!San76zCr7Xu!I22IAgDo5 zSjOSjaC@E{_B05q9d2w4f?sJ@mFzbPBtNurK^*oXqYxa8vrXFOQg4U8*y(fFDd5HI zu=8957s*9Qx^U54jASsUz=x9S&&6v`m6jQd7bFPIL~tB}GqiDK!C{GbS;h_I260Io zwg+s!lM$SX;50nba4IepHKL+<+5n~g*il54jaT2;TK#lb@1@&{Omj%?~Z1J#b)ssbggsUu1mBhDxJXu?d!_uo~_(6iGM5C#w|s#6~Q*Vn&DR9 z^($PeO|44Ne5ZF_vasqsIxX!`mi63ryq@GXa2vTz+-7bI_XD?;`;q&J+lJr@1Xm)s z3PJ2q*C6;Ef@=|6hv4@Ju3ydVz*z3$c5{2Uz1%)-KX-sTh~Neh*^>yKLhv+#w-8~1 z2pdG$QizaYb$wKAs!gf((9$(F+NIS>t#gg7*1Ot4JG$DoBQ49F<}P3?xij2Z?i_a> z!Ho!RLJ%wdmZjW9?h-8Ft|0gWg4;z$e^>}j?Vn$uPAST-A8ObGyZWTc(jr|kGC!xb zFdQpIdjIUkiduDiMP7c|prXRzy0abQzs21X?{=HByTkp?-9>OKfZ7XKc4JDts z20oY%;d^sRz7I|nz~2x&i{N#gZ#W}pwfAZQG<-ivVjCa9NAgh!odi@v0@XuQPu??|$vUXs4vm4E9wejak3(dE6n@u_^81beEh z2woE;Lk&OMFUjeG7e0$0qU~F2OtkVtwV|~Z#@T!hpPOEptsbsV+aieP&l}o`+N|yc zd|?J=ExM>QKM|jAX^o1rk?5!>25u*um0ur|C3g2r$*EAcKhd#@Mk5) ztNCB}U-_f_G5$Dzfq1VuVzCrjNb$&qiylcgo{<{!fvBhlrrt^K1MQ zJXykjcRsameCp`xOa2W`SMjg-*N9*d!L{;l`FDum5g|S{#k)Vur4lKDt4IOPco9;Z z@q#n)2D44=2`^(ODJSiO{f3m6N~H#f=!A&Qi0INL?JVtrQ*VSJB8T-E%`s$XuUY9ET!N-FMy1LLGNIP*qy!*dnh<1`=l^wZXa9__m} zvm*0Li|X>L8>6bLE2_1fN4k+x7pYv^XQU}9b;Zvb`iwL&>uA

WN*m)B_QwOQc?i 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 diff --git a/BasicAssignments/main.swift b/BasicAssignments/main.swift index 6887024..069471d 100644 --- a/BasicAssignments/main.swift +++ b/BasicAssignments/main.swift @@ -139,16 +139,13 @@ introducibleArray.append(Robot()) //배열을 순회하며 각 타입 고유의 메서드들을 호출하는 코드를 작성해주세요. for i in introducibleArray { switch i { - case is Cat: - let cat = i as! Cat + case let cat as Cat: print(cat.meow()) print(cat.introduce()) - case is Dog: - let dog = i as! Dog + case let dog as Dog: print(dog.bark()) print(dog.introduce()) - case is Robot: - let robot = i as! Robot + case let robot as Robot: print(robot.charge()) print(robot.introduce()) default: