NSLayoutConstraint.activate([ emailInfoLabel.leadingAnchor.constraint(equalTo: emailTextFieldView.leadingAnchor, constant: 8), emailInfoLabel.trailingAnchor.constraint(equalTo: emailTextFieldView.trailingAnchor, constant: 8), emailInfoLabel.centerYAnchor.constraint(equalTo: emailTextFieldView.centerYAnchor), emailTextField.leadingAnchor.constraint(equalTo: emailTextFieldView.leadingAnchor, const..
아키텍처(Architectuer) 애플리케이션을 설계하고 구축하는데 사용되는 구조와 패턴을 나타낸다. 모델의 구성과 동작 원리, 구성요소 간의 관계 및 시스템 외부 환경과 관계 등 포괄하여 설명하는 설계도 같은 것 MVC (Model-View-Controller) 애플리캐이션의 구성 요소를 모델(Model) , 뷰(View), 컨트롤러(Controller)로 분리하는 패턴이다. 모델은 데이터 및 비즈니스 로직을 타나태며, 뷰는 사용자 인터페이스를 표시하고, 컨트롤러는 사용자 입력을 처리하고 모델 및 뷰 간의 상호 작용을 조정한다 Cocoa 및 Cocoa Touch 프레임워크는 MVC 아키텍처를 기반으로 구축되었다. Model 데이터 저장, 가공, 관리 등과 같은 역할을 담당 사용자 정보, 애플리케이션 설..
문제 설명 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) import Foundation func solution(_ a:[Int], _ b:[Int]) -> Int { var sum = 0 for i in 0..
두 배열 내 요소 비교 ( contains , elementsEqual ) if comNumbers.elementsEqual(playerNumbers) { print("정답입니다!!!") gameAttempts.append(attemptCount) break } else { strike = 0 ball = 0 for i in 0..
if let 문 내 쉼표(,) 를 통한 다중 옵셔널 바인딩 if let choice = readLine(), let choiceInt = Int(choice) { switch choiceInt { case 1: print("게임을 시작합니다.") GameStart() break case 2: print("") GameRecords() break case 3: print("숫자 야구 게임을 종료합니다.") GameEnd() break default: print("잘못된 입력입니다. 1, 2, 3 중에서 선택해주세요.") } } else { print("입력이 잘못되었습니다.") 게임을 시작하기 전에 선택 항목을 받아 각자 다른 클래스를 실행시키는 식을 만들었다. 일단 각자의 식을 실행하려면 각기 다른 입력..
문제 설명 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. func solution(_ n:Int) -> String { var result = "" for i in 0..
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..