[스탠포드iOS] View
·
iOS/스탠포드 iOS 강의
1. ViewView는 좌표공간위계구조를 가지고 있음서로 겹칠수도 있음모든 뷰는 하나의 슈퍼뷰를 가짐여러개의 자식뷰를 가질 수 있음 * UIWindowThe UIView at the very, very top of the view hirearchy(even includes status bar)가장 상위의 뷰 계층에 존재앱마다 한개씩 존재 뷰를 넣고 빼는 동작을 하는 함수addSubview는 부모뷰에, removeFromSuperView는 삭제될 그 뷰에 호출addSubview(aView: UIView) //sent to aView's(soon to be) superviewremoveFromSuperView() //this is sent to be the view you want to remove(n..
[스탠포드iOS] Swift 기초문법 정리(AnyObject, Plist, NSUserDefault)
·
iOS/스탠포드 iOS 강의
1. AnyObject프로토콜. Objective-C와 호환을 위해 사용Objective-C에서는 id라는 타입(모르는 클래스 객체에 대한 포인터) 존재Swift에서도 위와 동일한 의미로 사용됨 AnyObject은 어떨때 사용?1. prepareForSegue와 같이 인자의 타입이 적어도 두 개 이상 될 수 있을 때 사용func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject)func touchDigit(sender: AnyObject) 2. 쿠키(cookie) 반환 시쿠키는 상태를 저장하고 뭔가를 기억하고 있다가 돌려주는 값. 어떤 값인지 알 수 없다var cookie: AnyObject AnyObject은 어떻게 사용?우리가 아는 타입으로 변..
[스탠포드iOS] Swift 기초문법 정리(Initialization)
·
iOS/스탠포드 iOS 강의
Initialization인자없는 init을 자동으로 생성init을 만든다면 인자없는 자동생성 init을 사용하지 않는다struct MyStruct { var x: Int var y: String}let foo = init(x: 5, y: "hello") init 안에서 할 수 있는 것프로퍼티 값 설정(심지어 이미 기본값을 가지고 있어도 설정 가능)상수도 설정 가능여러 init메소드에서 다른 init메소드를 한개만 호출 가능부모 클래스의 init도 호출 가능 init 안에서 반드시 해주어야 할 것init이 끝날 때는 모든 프로퍼티가 값을 가져야 함 클래스에서는 init메소드로 두개의 타입이 존재 - 지정초기화를 직접 구현하지 않아도 되는 경우: 생성자를 작성하지 않아도 모든 프로퍼티가 기본값을..
[스탠포드iOS] Swift 기초문법 정리(Array, Dictionary, String )
·
iOS/스탠포드 iOS 강의
1. Arrayvar a = Array()var a = [String()let animals = ["Giraffe", "Cow", "Doggie", "Bird"] //var로 변경해야 append 가능animals.append("Ostrich")let animal = animals[5] //crash(array out of bounds)//enumerating an Arrayfor animal in animals { print("\(animal)")} Array 메소드1. filterArray의 모든 요소마다 클로져를 실행하고 true로 반환되는 요소를 포함시켜 반환filter(includeElement: (T) -> Bool) -> [T]let bigNumbers = [2, 47, 118, 5, 9]...
[스탠포드iOS] Swift 기초문법 정리(Optional, Tuple, Data Structure)
·
iOS
1. Optional 옵셔널은 모든 타입의 옵셔널이 될 수 있다 enum Optional { case None case Some(T) } let x: String ?= nil let x = Optional.None let x: String ? = "hello" let x = Optional.Some("hello") switch x { case Some(let value): y = value case None: } 옵셔널은 사슬처럼 연결될 수 있다(옵셔널 체이닝) 두 코드는 서로 같은 기능을 한다 옵셔널 체이닝이 되어있으면 앞에서부터 추출할 수 있는 값을 추출하고 추출할 수 없다면 전체표현에서 nil을 반환한다 그래서 x는 int일수도 optional일수도 있기 때문에 optional int 타입이 된다...
[프로그래머스] SQL 레벨 1-2 풀이
·
알고리즘
1. SELECT (1) 모든 레코드 조회하기 SELECT * FROM ANIMAL_INS; (2) 역순 정렬하기 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC; (3) 아픈 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION='SICK' ORDER BY ANIMAL_ID; (4) 어린 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION!='Aged' ORDER BY ANIMAL_ID; (5) 동물의 아이디와 이름 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY AN..
프로그래머스 - 직사각형 별찍기(C++)
·
알고리즘
문제 푼 소감 : 흔한 별찍기 문제 문제 풀이 : 세로만큼 첫번째 for문이 돌고 가로만큼 두번째 for문이 돌면서 별을 찍으면 된다. #include using namespace std; int main(void) { int n, m; scanf("%d %d", &n, &m); for(int i=0;i
Django+Docker 이미지 만들어 배포하기
·
잡다구리/웹 & 서버
Docker를 처음 써보는 초보자 기억 복기용이므로 틀린 부분이 있을 수 있습니다. Docker와 Docker 이미지의 개념에 대한 부분은 추후 업데이트 예정입니다. IDE : Pycharm / 터미널: zsh / 파이썬 버전 3.9 venv 생성 및 활성화 - venv (virtual environment) : 프로젝트 별 독립된 파이썬 실행 환경(runtime/interpreter)을 사용 보장 - 버전 충돌을 방지할 수 있기 때문에 venv에 pip로 패키지를 설치하고 사용하는 것을 권장합니다. - Django 프로젝트 파일로 들어간 후 venv를 생성하고 actiavte시킵니다. activate하지 않으면 pip로 설치한 패키지가 제대로 원하는 venv에 설치되지 않을 수 있으며 Docker로 이..
최대 부분 증가 수열 [DP]
·
알고리즘
인프런 - it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비 강의를 바탕으로 공부한 내용입니다. 문제는 비공개로 입력예제와 출력예제만을 가지고 포스팅 입력예제 1 5 3 7 8 6 2 9 4 출력예제 1 4 풀이 - 숫자 사이의 간격은 중요하지 않음(헷갈렸던 부분) - 수열의 최대 길이가 이 문제에서 구하고자 하는 것이다. - 수열을 구성할때는 1 2 3 4 처럼 마지막 수보다 앞의 수들이 작게 구성한다. dy[1] = 5 , 길이 1 dy[2] = 3, 길이 1 dy[3] = 3,7 / 5, 7 , 길이 2 dy[4] = 8이기 때문에 앞에 7을 구성하는 길이+1(이때 1이 붙는 이유는 8이 하나 붙기 때문)이 된다, 길이 2+1 = 3 여기서 규칙을 찾으면 (1) 해당 인..
계단오르기 [DP]
·
알고리즘
인프런 - it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비 강의를 바탕으로 공부한 내용입니다. 풀이 - 네트워크 선 자르기와 같은 방식으로 풀면 되는 문제 - 점화식을 구하면 f(n)=f(n-2)+f(n-1) - 메모이제이션을 통해 하나씩 값을 기록해 가며 DFS함수를 사용한다 #include #include int arr[101], n; int DFS(int L){ if(arr[L]>0) return arr[L]; if(L==1 || L==2){ return L; }else{ return arr[L]=DFS(L-2)+DFS(L-1); } } int main(){ scanf("%d", &n); printf("%d\n", DFS(n)); return 0; }