일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- UICollectionView
- 애니메이션
- swift documentation
- ribs
- uitableview
- 리펙터링
- Human interface guide
- 스위프트
- SWIFT
- map
- collectionview
- RxCocoa
- Refactoring
- tableView
- UITextView
- uiscrollview
- swiftUI
- 리펙토링
- Observable
- combine
- HIG
- ios
- Clean Code
- 리팩토링
- clean architecture
- rxswift
- Xcode
- 클린 코드
- Protocol
- MVVM
- Today
- Total
목록알고리즘 (8)
김종권의 iOS 앱 개발 알아가기
순열과 조합 (완전탐색 DFS) - 순열은 (1, 2), (2, 1) 다른 것: 순서도 고려한 것 조합은 (1, 2), (2, 1) 같은 것: 순서는 고려하지 않은 것 - 구현 시 차이점은 for문: 조합: for문 시작점이 dfs에서 들어오는 것 순열: for문 시작점이 0부터 * 데이터 let rawData = "0123" let data = rawData.map { String($0) } var visit = [Bool](repeating: false, count: data.count) 1) 조합 // 4C2 dfs_comb(data: data, curInd: 0, curCnt: 0, targetCnt: 2, answer: "") func dfs_comb(data: [String], curInd: ..
일반 iOS프로젝트에서 readline을 할 경우 입력이 안되는 경우 발생 - iOS프로젝트는 샌드박스이기 떄문에 input기능이 존재 x - 샌드박스: 외부로 부터 들어온 프로그램이 보호된 영역에서 동작해 시스템이 부정하게 조작되는 것을 막는 보안 형태 macOS - Command Line Tool 사용
알고리즘 핵심: https://ios-development.tistory.com/525 swift로 알고리즘 접근 코드의 간결화를 위해 강제 unwraping 사용 string타입에서 특정 character접근 시 [Charactor] or [String] 타입으로 변환하여 효율적으로 접근 String타입에서 특정 character 접근 시 O(N) Array타입은 random access O(1) String의 for문에서 value값은 String.Element형 :(for문 안에서 Int형으로 변경하고 싶은 경우, String으로 먼저 변형) swift는 Array, Set, Dictionary 세 가지 collection을 제공하므로 나머지 세 가지에 대해 어떻게 쓸것인지 미리 고민 Heap: S..
swift의 String 형 value type 특성 c, c++, java와는 다르게 string형에서 인덱스에 Int로 접근 불가 swift에서는 인덱스 값에 Int가 아닌 Index자료형이 위치 (swift는 Sring이 reference type이 아닌 value type이기 때문) let str = "1234" str[str.startIndex ..< str.endIndex] // 1234 Index값의 주의 사항: 위처럼 endIndex 값은 문자열 마지막이 아닌, 마지막 다음 문자열의 끝을 참조 String.Index 타입 Index타입이 따로 존재하며, 이것을 통해 문자열의 위치를 계산 String은 기본적으로 `self.startIndex`를 제공하므로 startIndex기준으로 떨어진 ..
"문자열".split(separator:) "12345".split(separator: "2") // ["1", "345"] "문자열".components(separatedBy:) separatedBy에 문자열을 넣고 실행하면, 문자열 중 separateBy에 속한 문자열을 제거한 배열로 반환 import Foundation "12345".components(separatedBy: "2") // ["1", "345"] ["문자열"].joined() 문자열 배열.joined(): 문자열 배열을 하나의 문자열로 만들어주는 함수 ["1", "234", "5"].joined() // "12345" // 동일 코드 ["1", "234", "5"].compactMap {$0} ["문자열"].joined(separa..
특정 문자열을 지정한 갯수만큼 추가하고 싶은 경우 for문을 쓰지 않고 스위프트 내장 함수 사용 String(repeating:count:) let strResult = String(repeating: "*", count: 5) print(strResult) // "*****"
특정 문자열에 해당하는 곳의 문자열 치환 replacingOccurrences(of:with:) 이용: self에서 of 문자열 부분을 with으로 변경 let sampleStr = "12345" let newStr = sampleStr.replacingOccurrences(of: "2", with: "vv") print(newStr) // 1vv345 Range값을 이용한 문자열 치환 replacingCharacters(in:with:) 이용: self에서 in 범위 부분을 with으로 변경 NSRange 개념: location, length 정보 가지고 있는 구조체 Range 개념: lowerBound, upperBound정보를 가지고 있는 구조체 range값을 가지고 문자열을 치환하는 예제) - t..
1. Date객체 초기화 1) init() 현재 시간 let d = Date() print(d) // print : 2020-05-23 08:57:33 +0000 2) init(timeIntervalSinceNow:) * timeIntervalSinceNow은 Double형 현재 시각으로 부터 입력한 초 이후의 시점 let tomorrow = Date(timeIntervalSinceNow:60*60*24) // 다음날 print(tomorrow) // print : 2020-05-23 21:00:18 +0000 3) init(timeInterval:since:) 다른 Date()객체로부터 입력한 초 이후의 시점 2. DateFormatter - 날짜 및 시간에 대한 포멧화 하는 객체 1) 객체 생성 le..