readLine().split(separator: “”)숫자 야구 게임을 진행하면서 사용자에게 입력 값을 받기 위해 readLine 을 사용하여 입력값을 넣을 수 있도록 구현하였다.하지만 내가 원하는건 사진과 같이 배열의 형태로 숫자를 넣는것이 아닌, 연결된 숫자로 넣기를 바랬다.하나하나 따로 저장해서 연결을해야할지 어떻게 진행을 해야하나 막막한 순간 구글링을 통해 split 메서드를 알아냈다. 이 코드는 사용자로부터 입력을 받고 각 문자를 separator: “” 값으로 분할하여 문자 배열로 만든다.이 코드를 사용하여 입력 받은 각 문자를 “” 로 지정하였더니 원하던 방식으로 값 입력이 가능해졌다.guard let input = readLine()?.split(separator: "") else { ..
제네릭 제네릭은 코드의 유연성과 재사용성을 높여주는 도구로서 함수, 메서드, 클래스, 구조체 열거형 등에서 사용할 수 있다. 제네릭을 사용하면 코드의 일부분을 일반화하여 데이터 타입이나 요구사항에 대한 명확한 정의 없이 다양한 종류의 데이터 타입을 처리할 수 있다. 타입 안정성(Type Safety) : 컴파일 시점에 타입 안정성을 보장합니다. 컴파일러는 제네릭 코드를 사용하여 잘못된 데이터 타입이 전달되는 것을 방지하고 실행 시점에서 발생할 수 있는 에러를 사전에 방지할 수 있다. 코드 재사용성(Reusability) : 동일한 로직을 다양한 데이터 타입에 대해 재사용할 수 있다. 제네릭을 사용하면 타입에 의존하지 않는 범용적인 코드를 작성할 수 있다. 유연성과 확장성(Flexibility and Sc..
문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. func solution(_ s:String) -> String { let middleIndex = s.index(s.startIndex, offsetBy: s.count / 2) if s.count % 2 == 0 { let startIndex = s.index(middleIndex, offsetBy: -1) let endIndex = s.index(middleIndex, offsetBy: 0) return String(s[startIndex...endIndex]) } else { return String(s[middleIndex]) } } middleIndex..
예외 처리 오류가 발생할 수 있는 코드 블록을 구분하고 오류에 대한 처리를 하는 방법 예외 처리는 ‘throw’ , ‘do-catch’ 그리고 ‘Error’ 프로토콜을 사용하여 이루어 진다. 1.에러처리 에러처리는 어떤 코드 블록에서 오류가 발생할 수 있는 상황을 정의하고, 이 오류를 처리하는 것을 의미한다. swift 에서는 ‘Error’ 프로토콜 을 준수하는 타입을 사용하여 오류를 표현한다. 2. Error 프로토콜 Error 프로토콜은 swift 에서 오류를 나타내기 위한 프로토콜이다. 사용자 정의 오류 타입을 만들때 이 프로토콜을 준수하도록 해야한다. enum VendingMachineError: Error { case invalidSelection case insufficientFunds(coi..
문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. func solution(_ arr:[Int]) -> [Int] { guard arr.count > 1 else { return [-1] } let minNumber = arr.min() let result = arr.filter { $0 != minNumber } return result } guard 를 통해 arr 배열의 숫자가 1개 이하일 경우 [-1] 을 출력하도록 작성한 후 arr 배열의 최소..
접근제한자 클래스, 구조체, 열거형, 포로토콜 등 접근을 제어하는데 사용된다. Open: 가장 넓은 접근 수준을 가지며, 해당 멤버가 선언된 모듈 외부에서도 상속하고 재정의할 수 있다. Public: 해당 멤버가 선언된 모듈은 외부에서도 접근할 수 있지만, 재정의는 할 수 없다. 일반적으로 프레임워크의 API 로 공개될 때 사용한다. Internal : 기본 접근 수준이며 동일한 모듈 내에서만 접근이 가능하다. File-private: 같은 소스 파일 내에서만 접근할 수 있습니다. 다른 소스 파일에서는 접근할 수 없습니다. Private: 가장 제한적인 접근 수준을 가지며, 같은 선언 블록내에서만 접근할 수 있다. 이러한 접근 제한자는 코드의 가시성과 모듈간의 의존성을 관리하고 코드의 안전성과 유지 보수..