일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- initializer
- 코딩테스트
- Method
- Protocol
- instance
- 이니셜라이저
- Swift
- Xcode
- tuist
- url
- interpace
- type
- String
- IOS
- Class
- 스위프트
- Terminal
- enum
- 디자인패턴
- property
- delegate
- Foundation
- Unicode
- extension
- UIKit
- struct
- Git
- optional
- initalizer
- init
- Today
- Total
목록Swift (59)
아리의 iOS 탐구생활
앞서 배우기 전에 값 타입과 참조 타입이 뭔지 알아볼까? ✔️ Swift에서 값 타입과 참조 타입 Value Type Reference Type Structure Enumeration Tuple Class Closure 🔍 값 타입(Value Type) 원본의 복사본을 가진 독립 인스턴스를 가지고 있다. 즉 함수의 매개변수로 값을 보낼 때나 값을 할당할 때 copy 속성으로 값을 처리한다는 것이다. 인스턴스 생성시 스택에 인스턴스가 저장된다. 🔍 참조 타입(Reference Type) 값 타입과 달리 값이 복사되는 것이 아닌 메모리를 참조한다. 즉 메모리 위치를 전달한다. 인스턴스 생성시 스택에는 힙메모리주소가 저장되고 힙에는 인스턴스가 저장된다. 그리고 인스턴스는 스택에 생성된 메모리에 연결된다. 값타..
✔️ inout이 뭔데? Swift는 기본적으로 'call by value' 형식이다. 그래서 call by reference를 구현하려면 함수의 매개변수를 inout parameter로 구현해야한다. 함수의 매개변수는 기본적으로 상수(let)이다. 함수는 값을 복사하여 내부에 전달하지만, inout 키워드를 사용하면 참조로 전달하게 된다. 예를 들어 일반적인 함수를 만들어서 확인해보면, var A = 3 var B = 9 func swapTwoTest(_ numbersOwn: Int, _ numbersTwo: Int) { // numbersOwn = 6 // Cannot assign to value: 'numbersOwn' is a 'let' constant // numbersTwo = 18 // Ca..
Swift의 자료구조 중 하나인 Set, 컬렉션 타입 이다. 순서가 중요하지 않거나, 항목이 한번만 표시되도록 해야하는 경우 배열 대신 집합을 사용할 수 있겠다. 배열과 달리 중복 요소를 허용하지 않고, 해시를 통해 값을 저장하기 때문에 배열에 비해 검색속도가 빠르다. 저장되는 자료형은 Hashable 프로토콜을 준수하고 있어야 한다. ✔️ 초기화 빈 Set을 만들땐 꼭 타입을 명시해줘야 한다. 빈 Set은 타입추론이 불가능하다. var intSet: Set = [] 값이 있는 Set은 'Set'만 명시해준다면 타입추론이 가능하다. let stringSet: Set = ["lee", "ari", "babo"] // Set ✔️ 값 추가 insert()와 update()는 같은 일을 하지만 아래와 같이 반..
✔️ 특징 키와 값이 쌍으로 이루어진 자료형 [key : value] 순서가 없는 컬렉션이다. > key나 value를 원하는 규칙으로 정렬하면서 순회. value는 중복 가능, key는 중복 불가 ✔️ 기본적인 초기화 let dic: [String : Double] = [:] let dic2 = [String : Double]() let dic3 = [1 : "100만원", 2 : "50만원" , 3 : "10만원"] // 타입유추 ✔️ uniqueKeysWithValues 배열에 value를 임의로 추가하여 새 Dictionary로 초기화. Array > [key, value] let arr = ["own", "two", "three", "four"] let dic = Dictionary(unique..
2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 2차원 배열이 주어졌을때 i,j 위치부터 x,y 위치까지의 합을 구하는 문제. 반복문을 이용해서 단순하게 풀수도 있는 쉬운문제이다. 더보기 let n = readLine()!.split(separator: " ").map{ Int($0)! } var arr = [[Int]]() for _ in 1...n[0] { arr.append(readLine()!.split(separator: " ").map{ Int($0)! }) } for ..
let arr = ["leeari", "ari", "lee"] for i in arr { print(i) } arr.forEach { i in print(i) } 두 반복문은 같은 결과물을 출력하지만 차이점이 존재한다. ✔️ 제어문의 영향 for i in arr { if i == "leeari" { continue } if i == "ari" { break } } arr.forEach{ i in // !!! error: only allowed inside a loop !!! // break // continue } for in문은 break과 contiue문을 사용하여 클로저를 탈출할 수 있지만, forEach는 이러한 제어문 사용이 불가능하다. forEach는 내가 반복하고 싶은 구문을 forEach라..
✔️ ceil() 올림 소수점 이하를 모두 버리고 정수부에 +1을 해준다. import Foundation ceil(10.1) // 11 ceil(9.5) // 10 ceil(8.3) // 9 ceil(7.7) // 8 ✔️ floor() 버림 소수점 이하를 모두 버린다. import Foundation floor(10.1) // 10 floor(9.5) // 9 floor(8.3) // 8 floor(7.7) // 7 ✔️ round() 반올림 소수점 이하를 반올림 한다. 0.3 이상은 1로 올리고 미만은 버린다. import Foundation round(10.1) // 10 round(9.5) // 10 round(8.3) // 8 round(7.7) // 8 위 메서드들을 사용하려면 Foundat..
정리하여 지속적으로 업데이트 예정... ✔️ 초기화 임의의 값을 넣어서 생성하기 let arr = Array(1...10) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 크기가 정해진 배열 let arr = Array(repeating: 0, count: 5) // [0, 0, 0, 0, 0] ✔️ sorted() sort() 정렬하기 sort는 원본을 정렬하고, sorted는 정렬된 값을 복제하여 리턴한다. 그래서 sort 사용시 변수(var)에만 적용할 수 있으므로 주의한다. var arr = [5, 10, 4, 8, 1, 2] let sortedArr = arr.sorted(by: >) // [10, 8, 5, 4, 2, 1] arr.sort() // [1, 2, 4, 5, 8, 1..
백준 코딩테스트 할때 거의 필수적으로 사용하는 입력과 출력을 정리해보았다. ✔️ Apple 공식문서 참고 Apple Developer Documentation developer.apple.com ✔️ 입력 받기 readLine() 문자열 입력받기 let str = readLine()! 정수 입력받기 let num = Int(readLine()!)! 공백이 있는 숫자를 배열로 입력받기 (1 2 3 4 5) let nums = readLine()!.split(separator: “ “).map{ Int($0) } // nums = [1, 2, 3, 4, 5] 공백없는 숫자를 배열로 입력받기 (12345) let nums = readLine()!.map{ Int(String($0))! } // nums = [..