Delegate Pattern 💡 특정 다른 클래스에 있는 어떠한 행동을 하고 싶을 때, 상속을 사용하는 대신 delegate라는 위임자를 선언하여 다른 클래스의 행동을 재사용하도록 하는 것. 이때, 위임할 클래스에 위임한 내용을 수신받을 클래스의 객체를 참조하도록 해줘야된다 *"Delegate는 어떤 객체가 해야 하는 일을 부분적으로 확장해서 대신 처리를 한다."* delegate 는 위임자라고 해석할 수 있다. 위임자를 갖고 있는 객체가 다른 객체에게 자신이 해야하는 일을 위임하는 형태의 디자인 패턴 클래스 상속과 동일하게 코드를 재사용할 수 있도록 하는 객체 지향 디자인 패턴이다 swift 에서의 Delegate Pattern 구현 : 어떠한 클래스에서 특정 protocol의 type을 가지는 de..
함수 swift문법에서 평소에 쓰던 함수에 대해 메모리 구조 혹은 @discardableResult과 같은 새로운 개념도 알게 되었고, 헷갈렸던 부분도 더욱 구체적으로 알게되었다 배운 내용들을 정리하고 예제도 만들어보고 내 생각도 덧붙이면서 지식을 공유하고자 한다 함수는 특정한 기능을 하는 코드의 모음이고, 입력과 출력이 존재할 수 있다 함수는 코드의 반복되는 부분을 줄이고 기능에 따라 분류해놓기 위해 사용된다 예를 들어 a와 b에 다양한 수를 넣어 a를 b만큼 출력하는 알고리즘을 작성하려고 할 때, var a = 2 var b = 3 for i in 1...b { print(a) } a = 6 b = 4 for i in 1...b { print(a) } a = 13 b = 33 for i in 1.....
클래스와 구조체는 어떻게 다를까?? 1. 클래스와 구조체 같은 데이터들을 가지고 있는 데이터 묶음을 정의해두는 틀 동일한 종류의 값들 (이름, 나이, 성별 등)을 가지고 있는 객체들을 생성할 때, 공통으로 사용되는 부분을 미리 정의해놓는것 즉, 객체를 생성하기 위한 설계도라고 할 수 있다 사용자 정의 타입 : String, Int와 같은 타입을 사용자가 정의한다 → Optional 처리 가능 프로퍼티, 메서드로 구성 데이터 모델링 시 주로 사용 .(점문법)으로 내부의 멤버( 프로퍼티, 메소드)에 접근 //데이터 묶음을 정의 (사용자가 직접 type 생성) class Vehicle { //프로퍼티(변수) var wheelCount: Int = 4 var name: String = "car" //메서드(함수..
Introduce SW academy에서 실습한 미니 프로젝트를 소개하고 복습하는 과정을 포스팅하려고 한다 실습 프로젝트를 수행하면서 Swift 문법에 대해서도 자세히 알게 되었고 앱 개발 기술도 습득할 수 있었다 다시 앱을 혼자서 구현해보면서 배운 점들을 상기시키고 추가할 점들이나 문제점 개선을 해보며 기록해려고 한다 Caffeine Holic 처음으로 진행한 미니 프로젝트의 주제는 'Caffeine Holic' 이었다 사용자에게 상태 변화를 입력받고, 이 상태 변화를 기록하며 화면에 재밌게 나타내는 간단한 어플이다 상단에는 Top Button이, 가운데에는 list와 Image View, 하단에는 상태 변화를 입력받는 Button들이 배치되어 있다 function 하단 버튼을 통해 스트..
tuple let n = readLine()!.split(separator : " ").map{Int(String($0))!} let (N,M) = (n[0],n[1]) swift로 알고리즘 풀이를 하다보면 위에서와 같이 ( )로 변수를 감싼 형태를 자주 사용하게 되는데 정확히 정의를 모르고 사용하고 있어서 인터넷에 찾아보았다 tuple? 매우 간단한 struct이다 여러 가지 타입을 한꺼번에 묶어서 사용할 수 있다 (또 다른 튜플이나, 함수까지도 가능)var tuple = (1, "hello",true) var anotherTuple = (3, tuple, sayhi()) 튜플의 있는 값에 접근하려면 ? 튜플이름.인덱스 혹은 이름 지정해주기var tuple = (1, "hello",true) print..
Swift 문자열 다루기 이왕 iOS 개발자 되기로 맘 먹은 김에 Swift 공부도 할 겸 해서 이제부터 알고리즘 풀이를 Swift로 해보려고 마음 먹었다 👊👊 import, print와 같은 내장 함수들이 python 과 유사했지만 역시 자료형에 민감한 언어이다 보니 신경써야 할 부분이 많았다 특히 문자열에서 특정 문자에 접근하는 것 골치 아픈 것은 명성이 자자하고 heapq, deque 같은 모듈이 지원이 안되는 경우의 처리가 복잡했다 이제야 보이는 파이썬의 편리함... 그래도 Swift가 훨 빠르다! 그래서 !!! 앞으로 Swift로 알고리즘을 풀 때 나도 참고하고 누군가도 참고하기 위해서 정리해보려고 한다 1. 문자열 입력 받기 readLine() Swift에서는 문자열을 입력받을 때 readLi..
Swift문법 Swift 언어 공부를 시작하며 여태까지 배운 언어들과의 차이점 위주로 정리하려 한다. 변수와 상수 선언 Swift는 함수형 프로그래밍의 패러다임을 채용한 언어임 -> 불변 객체를 굉장히 중요시 한다. 대부분 상수나 변수 선언 시에 타입을 꼭 명시해준다. //변수의 선언 var integer : Int = 5 //상수의 선언 let greet : String = "Hello" 리터럴 문법에도 동일하다. //Array선언 var integers : Array = Array() //Dictionary선언 var anyDic : Dictionary = [String : Any]() //Set선언 var integerSet : Set = Set() 기본 데이터 타입 Swift는 데이터 타입에 엄격..
문제 정보 문제 출처: 백준 온라인 저지 문제 링크: 1260번 DFS와 BFS 제출 언어: Python 풀이 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 코드 from collections import deque import sys input = sys.stdin.readline def DFS(v): #depth-first search visit2[v]=1 print(v,end=' ') for i in range(1,N+1): if visit2[i]==0 and graph[v][i]=..