
Classes, Structures, Enumerations 📌 유사점(Similarity) 클래스(Class), 구조체(Struct), 열거형(Enum)은 Swift의 기본 자료구조 블럭입니다.(These are the 3 fundamental building blocks of data structures in Swift) 세가지 구조 모두 같은 방식으로 정의됩니다. // 키워드 + 이름 + {} class testClass { } struct testStruct { } enum Op { } 세가지 자료구조 모두 프로퍼티(Properties)와 함수(Functions)를 가질 수 있습니다. 하지만 열거형(Enum)은 저장 프로퍼티(Stored Property)를 가질 수 없습니다. 클래스와 구조체만 저..

튜플(Tuples) 🗜 튜플이란? 여러가지 타입들을 묶어 하나의 타입으로 선언해주는 것입니다. 2개 뿐만 아니라 3개 이상의 타입의 값들도 튜플로 묶일 수 있으며 이렇게 묶인 튜플은 타입이 사용될 수 있는 곳이라면 어디서도 사용 가능합니다. 💻 튜플의 사용 방법 튜플의 사용 예시는 아래와 같습니다. // 1. 튜플의 요소 수만큼 변수를 할당해 사용 let x: (String, Int, Double) = ("hello", 5, 0.5) let (word, number, value) = x // tuple에 접근할 때 요소들이 이름을 갖습니다. // 요소의 개수가 맞지 않는다면 컴파일 에러가 발생합니다. print(word) print(number) print(value) // 2. 튜플을 정의할 때 ele..

🎯 Protocol(프로토콜) vs Inheritance(상속) 📎 Protocol 및 Inheritance 되짚기 Protocol을 학습하며 지속적으로 학습한 내용은 'blueprint(청사진)이다', '공통 기능을 가진다' 등 입니다. 이러한 학습을 하며 자연스럽게 동시에 떠오르는 생각은 위의 특징이 클래스의 상속(inheritance)와 유사하다는 점이며 이 두가지 개념을 구분할 필요성을 느꼈습니다. 우선 구분을 하기 전, 각각의 특징을 상기할 필요가 있습니다.위의 정의는 기본적인 것으로 정확한 차이를 이해하기 어렵습니다. 그래서 예시 상황을 통해 두 개념을 조금 더 알아볼 필요가 있습니다. 상속 : 상속받을 클래스의 모든 기능을 물려받는다.(부모의 모든 기능을 자식 클래스가 물려받는다) 프로토콜:..

팰린드롬 연결 리스트(Palindrome Linked List - 234 from Leet Code) Reference: Palindrome Linked List 🎯 문제 의의 문제 자체의 난이도는 높지 않았습니다. 연결 리스트로 구현된 자료를 반환하며 리스트에 담아 처리하면 기존의 팰린드롬 문제와 다를게 없기 때문이고, 또한 이러한 풀이가 다른 방식의 풀이와 속도 측면에서 큰 차이가 나지 않기 때문에 이 방법으로도 충분한 풀이입니다. 아래는 제 풀이입니다. node를 순회하며 값을 head_list에 담아 처리하고, head_list의 palindrome 여부를 판단합니다. 위의 return문의 Boolean은 요소를 하나하나 탐색하며 팰린드롬 여부를 파악하는 것보다 더 빠른 효율을 보여줍니다. 기능적..

프로퍼티(Property) Property의 정의 클래스나 구조체, 열거체의 객체 인스턴스가 그 내부에 가지고 있는 객체의 상태에 관한 정보를 말합니다(Properties associate values with a particular class, structure, or enumeration). 저장 프로퍼티는 상수나 변수를 인스턴스의 일부로서 저장하지만, 연산 프로퍼티는 저장한다기보다 값을 연산하는 프로퍼티입니다(Stored properties store constant and variable values as part of an instance, whereas computed properties calculate (rather than store) a value). 저장 프로퍼티는 클래스와 구조체에만..

열거형(enum) 제한된 선택지를 주고 싶을 때 정해진 값 외에는 입력받고 싶지 않을 때 예상된 입력 값이 한정되어 있을 때 각각의 케이스가 값으로 취급된다. C언어의 열거형에서는 정수값이 자동으로 할당되지만 Swift에서는 작동 방식이 다르다. Swift에서는 각 항목이 그 자체로 고유값이 될 수 있다. 처음 선언시에는 열거형을 명시해줄 필요가 있다. enum Weekday { case mon case tue case wed case thu, fri, sat, sun } var day: Weekday = Weekday.mon enum이 정수값을 가지면 rawValue를 생성해줄 수 있고 이 rawValue는 첫번째 case가 값이 정해지면 C언어처럼 1씩 증가한다. 1씩 증가하다가 중간에 중복되지 않는..

데이터 타입 고급 1. 데이터 타입 안심 데이터 타입 안심이란 데이터의 타입에서 오는 실수들을 줄일 수 있다는 말로서 Swift가 컴파일 시 타입을 확인하며 문제가 있을 경우 컴파일 오류로 알려준다. 타입 확인: 컴파일시 타입을 확인하는 과정을 타입 확인이라고 한다. 타입 추론: 특정 타입을 명시하지 않아도 컴파일러가 할당된 값을 기준으로 변수나 상수의 타입을 결정한다. 2. 타입 별칭(Type Alias) 존재하는 데이터 타입에 임의의 다른 이름(별칭)을 부여할 수 있으며 이를 타입 별칭이라고 한다. 기본으로 제공하는 데이터 타입(Int...), 사용자가 생성한 타입 모두 별칭 생성이 가능하다. typealias Number = Int typealias Count = Int let myMoney: Nu..

if let vs guard let (if let, guard let 차이 비교) 1. if-let optional 타입의 값이 nil인지 판단하고 nil이 아닐 경우 if 블럭 안에서 optional이 unwrapped 된 상태로 사용 가능하다. if-let을 사용할 때는 추출하려는 변수의 이름과 동일하게 사용해도 상관 없다. 2. guard-let guard 뒤에 조건이 true일 때 코드가 계속 실행되며 반드시 뒤에 else 구문이 필요하다. guard 뒤 조건이 false라면 else 블럭이 실행되며, 자신보다 상위 코드 블록을 종료하는 코드가 반드시 들어가야한다. (return, break, continue, throw) 옵셔널 바인딩으로 사용할 경우 guard 구문 실행 코드 아래부터 함수 블..
- Total
- Today
- Yesterday
- 순열사이클#BOJ#Python
- 병든 나이트#BOJ#탐욕법#Python
- 미로 탐색#백준알고리즘#Python
- 텀 프로젝트#백준알고리즘#Python
- API#lazy#
- PassingCars#Codility#Python
- 백준 알고리즘#BackTracking
- N으로 표현#DP#Programmers#Python
- 공유기 설치#BOJ#이분탐색#Python
- 종이자르기#분할정복#BOJ#Python
- 반복수열#백준알고리즘#Python
- 파이썬알고리즘인터뷰#4장
- django#slicing
- 쿼드트리#BOJ#분할정복#Python
- 토마토#백준알고리즘#Python
- filter#isalnum#lower
- 터틀비치#리콘#xbox#controller
- 날짜 계산#BOJ#완전탐색#Python
- Swift#Tuples#Range
- 리모컨#완전탐색#BOJ#Python
- Brackets#Stacks and Queues#Codility#Python
- Distinct#Codility#Python
- 암호코드#dp#BOJ#Python
- django
- NumberofDiscIntersections#Codility#Sort#Python
- Triangle#Sorting#Codility#Python
- 배열합치기#분할정복#BOJ#Python
- 섬의개수#백준알고리즘#Python
- 나무자르기#BOJ#이분탐색#Python
- 랜선자르기#이분탐색#BOJ#Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |