전체 글(161)
-
[Swift 기초] assert와 guard
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 애플리케이션이 동작하는 동중에 생성하는 다양한 결과값을 동적으로 확인하고 안전하게 처리할 수 있도록 확인하고 빠르게 처리할 수 있다. 1. assert 함수 assert(::file:line:) assert(condition: Bool) 디버깅 중 조건의 검증을 위해 사용 condition이 true인 경우 그냥 지나침 그렇지 않은 경우에는 메세지를 출력하고 동작을 중지시킴 디버깅 모드에서만 동장 var someInt: Int = 0 //조건이 true인 경우 그냥 지나치고 그렇지 않으면 메세지를 출력하고 동작을 중지시킴 assert(someInt == 0, "someInt != 0") someInt = 1 //ass..
2022.04.05 -
[Swift 기초] 자동참조계수, 강한참조, 약한참조
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 0. 메모리 관리 heap 영역: 동적으로 메모리를 할당할 때 위치하는 영역, 필요없을 때 소거되는 영역 1. 자동 참조 계수 JAVA: 가비지 콜렉터를 사용. 메모리 관리는 편리하나 가비지 콜렉터가 수시로 실행되어 시스템에 부하 C, C++: 개발자가 할당한 동적 메모리를 직접 해제해야 함, 에러 가능성 높음 자동참조 관리 기법 프로그램의 메모리 사용을 자동 참조계수를 통해 추적, 관리 필요없는 클래스 인스턴스 메모리를 자동적으로 해제 클래스의 인스턴스에만 적용 1-1. ARC: Automatic Reference Counting class Person { var name: String init(name: Strin..
2022.04.04 -
[Swift 기초] 타입캐스팅
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 타입캐스팅은 인스턴스의 타입을 확인하는 용도(is) 클래스의 인스턴스를 부모 혹은 자식 클래스의 타입으로 사용할 수 있는 지 확인하는 용도(as) 0. 참고 let someInt: Int = 100 let someDouble: Double = Double(someInt) 타입캐스팅이 아니라 → someInt라는 값을 가지고 Double 타입의 값을 하나 더 생성해주는 것 타입 캐스팅 예제를 위한 클래스 정의 class Person { var name: String = "" func breath(){ print("숨을 쉽니다.") } } class Student: Person { var school: String = "..
2022.04.04 -
[Swift 기초] 인스턴스의 생성과 소멸
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 프로퍼티 기본값 스위프트의 모든 인스턴스는 초기화와 동시에 모든 프로퍼티에 유효한 값이 할당되어 있어야 한다. 프로퍼티에 미리 기본값을 할당해 두면 인스턴스가 생성됨과 동시에 초기값을 가진다. class PersonA { // 모든 저장 프로퍼티에 기본값 할당 var name: String = "unknown" var age: Int = 0 var nickName: String = "blank" //초기값이 없는 경우 에러 발생 //Class 'PersonA' has no initializers //Stored property 'location' without initial value prevents synthe..
2022.04.02 -
[Swift 기초] 클래스와 상속
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 0. 참고 함수: func 키워드로 생성하는 것 메서드: 클래스, 구조체, 열거형 속에 포함되어 있는 함수 인스턴스 메서드: 인스턴스를 생성해야만 호출 가능한 함수, 생성된 인스턴스에 .(dot)문법을 통해 접근 타입 메서드: 인스턴스 생성 없이 타입의 이름만 알면 호출 가능, static 혹은 class가 붙으면 타입 메서드 1. 클래스 클래스(class): 실제 세계의 객체를 우리의 앱에 나타내기 위해 설계된 코드 모듈이다. 앱의 구성 요소로 사용 클래스를 사용하면 프로그램에서 사용할 수 있는 객체를 추상화 할 수 있다. 실제 세계) 실제 객체로 자동차 - 빨간색 차, 문이 4개, 최고 속도가 120마일, 2015..
2022.04.02 -
[Swift 기초] 프로퍼티
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 프로퍼티 프롤퍼티는 클래스, 구조체, 열거형 내부에 구현할 수 있다. 열거형 내부에는 연산 프로퍼티만 구현할 수 있다. 타입과 관련된 값을 저장할 수도, 연산할 수도 있다. 프로퍼티의 종류에는 인스턴스 저장, 타입 저장, 인스턴스 연산, 타입 연산, 지연 저장 프로퍼티 연산 프로퍼티는 var로만 선언할 수 있다. 1-1. 인스턴스 저장 프로퍼티(stored property) 일반적으로 사용한 프로퍼티 struct Student { var name: String = "" var `class`: String = "Swift" var koreanAge: Int = 0 } 1-2. 인스턴스 연산 프로퍼티(computed..
2022.03.31 -
[Swift 기초] 참조타입과 값타입
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. Class / Struct /Enum Class Struct Enum Type Reference Value Value Subclassing O X X Extension O O O 클래스만 유일하게 참조타입, 상속할 수 있음(단일상속) 1-1. 구조체는 언제 사용하나? 전달 → 참조가 아닌 복사를 원할 때 자신을 상속할 필요가 없거나, 자신이 다른 타입을 상속받을 필요가 없을 때 2. 값과 참조타입 Value: 데이터를 전달할 때 값을 복사하여 전달 Reference: 데이터를 전달할 때 값의 메모리 위치를 전달 2-1. 값타입(Value) struct, enum, tuple 각 인스턴스마다 (별도의 메모리에) 데..
2022.03.19 -
[Swift 기초] 사용자정의타입
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 구조체 struct 이름 { /* 구현부 */ } struct Sample{ //타입안에 들어가있는 변수: 프로퍼티 //인스턴스 프로퍼티 var mutableProperty: Int //가변 프로퍼티 let immutableProperty: String //불변 프로퍼티 - 인스턴스 생성 후 수정할 수 없음 //타입 프로퍼티 static var typeProperty: Int //타입안에 들어가있는 함수: 메서드 //인스턴스 메서드 func instanceMethod(){ } //타입 메서드 static func typeMethod(){ } } 구조체(Structures): 서로 다른 자료형의 변수들을 묶어 하나..
2022.03.18 -
[Swift 코테] 백준 1316 그룹 단어 체커
배열과 집합의 인덱스를 활용해 문제를 풀었습니다. 1. 배열의 중복 요소를 제거한 집합을 만들고 2. 집합의 요소를 기준으로 배열에서 해당 요소의 처음, 마지막 인덱스를 구조체에 저장합니다. 3. 구조체를 처음 인덱스를 기준으로 정렬한 후 4. 해당 요소의 마지막 인덱스와 다음 요소의 처음 인덱스를 비교합니다. 5. lastIndex firstIndex 라면 return false 코드 import Foundation struct order{ var start: Int var end: Int } var num = Int(readLine()!)! var count = 0 for i in 0.. Bool{ var arr = Array..
2022.03.17 -
[Swift 코테] 백준 2941 크로아티아 알파벳
하루 지나서 푸니까 생각보다 너무 간단했던 문제였다. 복잡하게 문자열로 바꿔서 풀지 말고 String 함수를 많이 알아야 겠다고 느낀 문제였다. 아래 contains와 replaceOccurrences함수가 메인이다. line.contains("지금 이거를") line = line.replaceOccurrences(of: "지금 이거를", with: "이걸로 바꾸자") 1. 이전 운영체제 버전의 크로아티아 알파벳의 유무를 String 함수인 contains로 확인하고 2. 있다면 다른 Character 하나로 변경한다 ex) "0" - 숫자는 입력되지 않기 때문 3. 모든 String을 살펴봐야 하기 때문에 else if 문이 아닌 if문만 사용 4. 바뀐 String을 Array로 변경하고, Array..
2022.03.17 -
[Swift 코테] 백준 11654 아스키 코드
코드 let input = readLine()! print((Character(input).asciiValue)!) //A = 97 //a = 65
2022.03.14 -
[Swift 기초] 클로저 Closure
//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎 1. 클로저 {(매개변수 목록) -> 반환타입 in //in은 반환형과 상태를 구분 짓는 구문 /*실행 코드*/ } {} 형식의 코드 블럭 → 클로저 표현을 통해 문장을 짧고 간단하게 만들 수 있다. 일회용 함수를 작성할 수 있는 구문 변수, 상수 등으로 저장하거나, 매개변수처럼 전달 인자로 전달되거나 사용할 수 있는 코드 블럭 역할 함수: 이름이 있는 클로저, 클로저의 일종 함수 역시 다른 함수의 매개변수로 사용될 수 있다. 클로저는 func와 함수 이름이 생략된 경량 함수 객체이다. 1-1. 함수와 클로저 사용 함수는 클로저의 일종이기 때문에 클로저 변수에 함수를 할당할 수 있다. //함수 func sumFunct..
2022.03.14