알고리즘 풀이 두수의 차 정수 num1과 num2가 주어질 때, num1에서 num2를 뺀 값을 return하도록 soltuion 함수를 완성해주세요. 제한사항 -50000 ≤ num1 ≤ 50000 -50000 ≤ num2 ≤ 50000import Foundation func solution( num1:Int, num2:Int) -> Int { return num1 - num2 }두수의 곱 정수 num1, num2가 매개변수 주어집니다. num1과 num2를 곱한 값을 return 하도록 solution 함수를 완성해주세요. 제한사항 0 ≤ num1 ≤ 100 0 ≤ num2 ≤ 100import Foundation func solution( num1:Int, num2:Int) -> Int { retu..
Protocal 프로토콜은 메서드, 프로퍼티, 이니셜라이저 등 요구 사항을 정의하여 특정 기능, 기능 집합을 나타내는 개념 구체적인 구현을 하진 않고 요구 사항에 대한 명세만 정의한다. 클래스, 구조체 , 열거형 등 다양한 유형이 프로토콜을 사용하여 구현할 수 있다. 이를 통해 코드 재사용성 및 유연성을 높힐 수 있다. protocal SomeProtocal { //프로토콜의 요구사항 정의 } 매서드 요구 : 특정 메서드를 구현, 매개변수와 반환값의 타입, 메서드 이름, 인스턴스 or 타입메서드 등 명시할 수 있다. 프로퍼티 요구 : 특정 프로퍼티를 구현, 프로퍼티의 이름, 타입, 읽기 및 쓰기 가능 여부 명시 이니셜라이저 요구 : 특정 이니셜라이저를 구현, 매개 변수와 이니셜라이저 과정을 명시 서브스크..
Extention 확장 익스텐션은 기존 클래스, 구조체, 열거형 등 기존 코드를 변경하지 않고 기능을 추가하거나 수정할 수 있는 방법을 제공하여 유지보수와 확장성을 향상시키는데 유용하다. 익스텐션은 원래 있던 코드에 새로운 메서드 , 계산 속성 , 초기화 , 서브스크립트 , protocal 을 추가할 수 있다. extension ExtendedType { // 새로운 메서드 , 계산 속성 , 초기화 , 서브스크립트 등 }아래의 예시는 Int 타입에 squared 라는 계산 속성을 익스텐션을 통해 추가하여 새로운 기능을 추가하는 예시 이다. extension Int { var squared: Int { return self * self } } let number = 5 let squaredNumber = ..
Initializer 클래스, 구조체, 열거형 등 인스턴스를 생성하고 초기화 하는 메서드 이니셜라이저는 인스턴스의 모든 속성을 초기화 하여 사용 가능한 상태로 만든다. 초기화 할때 필요한 값을 전달하고 초기화 과정에서 다양한 작업을 수행할 수 있다. class Position { var x: Double var y: Double init(x: Double, y: Double) { self.x = x self.y = y } // Convenience Initializer convenience init(x: Double) { self.init(x: x, y: 0.0) } }Convenience Initializer 는 특정한 인스턴스에 값을 넣고 뺄 수 있도록 편리하게 구성 가능하다. 슈퍼클래스 이니셜라이저..
is 연산자 is 연산자는 특정 인스턴스가 지정된 타입인지 확인하는데 사용한다. 만약 인스턴스가 지정된 타입의 인스턴스라면 'true' 를 반환하고, 그렇지 않으면 'false' 를 반환합니다. class Animal { } class Dog: Animal { } let animal = Animal() let dog = Dog() print(animal is Animal) // 출력값 : true print(animal is Dog) // 출력값 : false Dog는 Animal을 상속받고 있으므로 is 관계가 될 수 없다. print(dog is Animal) // 출력값 : true print(dog is Dog) // 출력값 : trueas 연산자 as 연산자는 인스턴..
상속 부모 클래스의 특성과 동작을 자식 클래스가 물려받아 확장하고 수정할 수 있다. 이를 통해 코드의 재사용성과 구조화에 유용하다. class Figure { var name = "Unknown" init(name: String) { self.name = name } func draw() { print("draw \(name)") } } class Circle: Figure { var radius = 0.0 } let c = Circle(name: "Circle") c.radius c.name c.draw() class Rectangle: Figure { var width = 0.0 var height = 0.0 } class Square: Rectangle { }위 예제에서 Circle 은 Figure..