profile
개발자 만들기
post-thumbnail

[TIL]0822_swift Initializer(생성자)

Class Initializer(생성자) 부모, 자식 클래스 형태가 같음 상속된 자식클래스는 부모와 다른 생성자로 만들 수 있다. Inheritance(상속) 상속된 자식 클래스의 경우에도 생성시점에는 자신이 갖고 있는 property뿐만 아니라 부모의 property 값도 설정해줘야 한다 SubClass ▶️ SuperClass 2-phase Initialization(클래스 생성시 2가지 단계) 안지킬 시 원하는대로 동작 ❌, 버그 발생 Phase 1(자식 class property부터 initialization) Phase 1이 끝나기 전까지 어떤 property나 method를 쓸 수 없음 Person ◀️ Student ◀️ StudentAthlete(◀️super.init(...), self.sports=...) Phase 2 부모 class의 property를 다 세팅하고 나서(phas

2021년 8월 22일
·
0개의 댓글
·
post-thumbnail

[TIL]0819_swift Struct, Class, 상속

Struct Struct 사용하는 경우 보통 Struct를 사용하는 경우는 3가지 경우로 나눠서 볼 수 있다. 두 object를 '같다, 다르다'로 비교해야 하는 경우 데이터 자체를 비교해야하는 경우 사용한다. Copy된 각 객체들이 독립적인 상태를 가져야 하는 경우 각 객체가 다른 상태로 관리되어야 하는 경우 사용된다. 코드에서 오브젝트의 데이터를 여러 스레드 걸쳐 사용할 경우 상대적으로 여러 스레드에 걸쳐 사용할 때 한전하게 쓸 수 있어 value타입으로 사용한다. Class Class 사용하는 경우 두 object의 인스턴스 자체가 같음을 확인해야 할 때 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우 일단 Struct로 쓰자 왜냐하면 Struct > Class로 바꾸는 것이 용이하기 때문에 되도록 Struct로 쓰는 것을 추천! 상속 상속의

2021년 8월 19일
·
0개의 댓글
·
post-thumbnail

[TIL]0817_백준2720, 10162

거의 2주? 3주가량 제대로 포스팅을 못한거 같은데 다시 꾸준히 올려야겠다😥 그리디(greedy) 알고리즘 그리디 알고리즘이란? Greedy algorithm 또는 탐욕 알고리즘이라고 불린다. 주로 최적의 해에 가까운 값을 구할때 사용 많은 경우 중 매 순간 최적이라고 생각되는 경우를 선택하여 최종 값을 구한다. 💡 항상 최적의 결과를 도출하진 않음 그러나 최적에 가까운 값을 구할 수 있는 장점이 있다. ✔️ 백준 10162 전자레인지 크게 어렵지 않은 문제였는데 이렇게 접근 해봤다. 숫자를 입력하고 입력한 숫자가 10으로 나누어 떨어지지 않으면 -1 출력 그렇지 않을 경우 A는 T를 300으로 나눈 몫 B는 T를 300으로 나눈 나머지를 60으로 나눈 몫 C는 T를 300으로 나눈 나머지, 그 나머지를 60으로 나눈 나머지, 그 나머지를 10으로 나눈 몫 비슷한 문제로 ✔️

2021년 8월 17일
·
0개의 댓글
·
post-thumbnail

[TIL]0729_swift Closure

Closure ❗️정확하지 않을 수 있음 기능을 수행하는 코드블록의 특별한 타입 함수는 Closure의 한가지 타입 Closure는 크게 3가지 타입 Global 함수 Nested 함수 Closure Expressions 함수처럼 기능을 수행하는 코드블록 함수와 다르게 이름이 없다 함수와 공통점과 차이점 💡Function(Global) ✔️이름이 있다 ✔️func 키워드 필요 💡Closure ✔️이름 없다 ✔️func 키워드 필요 없음 ⭐️공통점 ✔️인자 받을 수 있다. ✔️값 리턴할 수 있다. ✔️변수로 할당할 수 있다. ✔️First Class Type이다. First Class Type 변수 할당⭕ 인자 받을 수⭕ 리턴⭕ Closure가 쓰이는 유형 Completion Block

2021년 7월 29일
·
0개의 댓글
·
post-thumbnail

[TIL]0728_swift 옵셔널(2)

옵셔널 바인딩(Optional Binding) 옵셔널 바인딩은 옵셔널에 값이 있는지 확인할 때 사용 옵셔널에 값이 있을 경우: 옵셔널에서 추출한 값을 일정한 블록 안에서 사용할 수 있는 상수, 변수로 할당하여 옵셔널이 아닌 형태로 사용하게 해준다. if, while 등과 결합하여 사용 옵셔널 바인딩 예제 💡옵셔널 바인딩을 통해 한 번에 여러 옵셔넣의 값을 추출할 수 있는데 쉼표(,)를 사용하여 바인딩 할 옵셔널을 나열하면 된다. (옵셔널 중 값이 하나라도 없다면 해당 블록 내부의 명령어 실행❌) 옵셔널 바인딩의 값이 0, Boolean 조건이 false일때 전체 if문의 조건은 false로 간주된다. 암시적 추출 옵셔널(Implicity Unwrapped Optionals) nil을 할당하고 싶거나 옵셔널 바인딩으로 매번 값 추출이 번거로울 경우, nil로 인해 런타임 오류가 발생하지

2021년 7월 28일
·
0개의 댓글
·
post-thumbnail

[TIL]0727_swift 옵셔널(1)

옵셔널(Optionals) 옵셔널은 어떠한 값이 있을 수도 없을 수도 있다는 것을 나타낸다. 옵셔널 변수, 상수 등은 데이터 타입 뒤에 물음표(?) 붙여 표현 💡즉 변수,상수의 값이 nil일 수도 있다. Swift에서는 String 타입을 Int타입으로 변환하기 위한 Int 메서드를 가진다. 하지만 모든 문자형이 정수형으로 변환❌ "123" ⇒ 123 but, "Hello World" ⇒ 분명한 값으로 변환❌ toInt메서드가 안되는 것으로 보아, Int 가 아닌 Optional Int 값을 리턴하고 있다. Optional Int는 Int가 아닌 Int?로 쓴다. ?는 그 값이 optional하다는 것을 의미 어떠한 Int값을 가지거나 아예 전혀 값을 가지지 않는 다는 것을 의미 Int값을 가지거나 값이 없을 수 있다. nil 옵셔널 변수의 값을 없는 상태로 만들어준다.(옵셔널이

2021년 7월 27일
·
0개의 댓글
·
post-thumbnail

[TIL]0726_Heap(heapq모듈)

Heap 부모 노드 ≦ 자식 노드 값을 갖는 이진 트리 최대, 최소값 가져올 때 많이 사용 heapq 모듈은 이진트리(binary tree) 기반 최소 힙(min heap) 자료구조 제공 힙과 관련된 함수(import heapq) 생성: heap = [ ] 추가: heapq.heappush(heap, item) = item 값을 heap으로 push 제거: heapq.heappop(heap, item) = 가장 작은 원소 값 제거 후 그 값 리턴 리스트 ▶️ 힙: heapq.heapify(heap) 최소 값(루트 노드): heap[0] 힙 정렬 최대 힙(Max heap) heapq 모듈은 최소 힙만 동작 따라서 최대 힙으로 하기 위해서는 힙에 튜플(tuple)을 원소로 추가, 삭제하면 튜플 내에서 맨 앞에 있는 값 기준으로 최소 힙이 구성되는 원리 이용 최대 힙을 만들기 위해서는 각 값에 대한 우

2021년 7월 26일
·
0개의 댓글
·