일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Swift
- git status
- embed&sign
- where Self
- Unreal iOS
- protocol 기본구현
- Algorithm
- 인프런
- 깃허브 가이드
- 알고리즘
- 깃헙
- Unreal static Framework
- Problem Solving
- C++
- Git
- Unreal iOS Framework
- 동적할당
- new int
- 깃허브 사용법
- Cpp
- 2차원배열
- 깃 명령어
- IOS
- PS
- unreal dynamic framework
- 백준
- ios framework
- 리눅스 명령어
- 깃허브
- github
- Today
- Total
목록Swift (10)
Get Up & Code, MacKin Talk
일부 Delegate 등 시스템 제공 API를 몇 가지만 둘러보더라도 @available 과 같은 속성이 정의된 메소드들을 많이 접할 수 있습니다. Xcode를 통해 개발을 하는 경우, @available 속성을 통해 특정 클래스, 메서드, 프로퍼티 또는 기타 코드 구성 요소의 사용 가능한 플랫폼 버전을 명시적으로 표시할 수 있으며, API의 버전 관리를 보다 세밀하게 제어하고, 버전 호환성을 지켜줄 수 있습니다. 함수 위에서 @available을 작성하면, Xcode IDE의 도움을 받아 선택적으로 해당 속성을 지정할 수 있습니다. @available(, introduced: , deprecated: , message: ) 플랫폼, 도입 버전, 폐지 버전, 등 여러 가지를 나타낼 수 있습니다. //..
프로토콜과 그 기본 구현을 활용해 중복을 피할 수 있다. Swift에서는 프로토콜의 익스텐션을 활용할 때 where 절을 사용해 타입 지정 방법을 제공 해당 익스텐션이 적용될 수 있는 타입의 범위를 제한할 수 있도록 해준다. 예시로 extension AProtocol { // methods... } 프로토콜을 정의할 때 특별한 타입 제약을 지정하지 않은 경우, 그 프로토콜은 어떤 타입에서든 채택할 수 있음. - 클래스, 구조체, 열거형 등 extension AProtocol where Self: UIView { // methods... } 특정 타입에만 프로토콜을 적용하고 싶은 경우 where Self: UIView Aprotocol을 확장하되, 그 확장의 범위는 UIView의 서브 클래스인 타입에만 ..
CocoaPods => Swift 및 Objective-C Cocoa 프로젝트 종속성 관리자 타 의존성 관리도구로 카르타고나 spm(swift package manager)이 있다. 이 중 spm은 Apple에서 지원해주는 First Party에 해당한다. 하지만 아직은 SPM을 지원하지 않는 많은 라이브러리들이 있기 때문에 SPM이 아닌 cocoapods도 필요하다고 판단이 되어 도입하였다. 하단 페이지에도 설명되어 있지만, 설치 방법은 간단하다. sudo gem install cocoapods 터미널 창을 열고, cocoapods 설치를 위한 명령어를 실행하면 된다. 대표사진 삭제 사진 설명을 입력하세요. Password를 입력하고 나면 위와 같은 ~ 1 gem installed로 끝나게 되고, co..
문항번호: 1931번 회의실 배정 tags: problem solving 1. 문제 분석 목표: 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수 찾기 2. 풀이 계획 입력 제한 : N(1 ≤ N ≤ 100,000) 시간 제한 : 2초 생각한 방향 최대한 회의를 많이 하기 위해서는 가급적 빠른 시간에 끝나는 회의를 선택하는 방법을 선택해야한다. 빠른 시간에 끝나는 회의임을 찾기 위한 정렬 과정이 요구된다. -> sort() 메서드 사용 추가로 다음에 시작할 수 있는 회의는 현재의 종료시간 이후이거나 같은 값을 가져야 한다. -> if 조건문 3. 계획 검증 시간 복잡도 예상 : 최대 100,000개의 데이터가 들어온다고 가정했을 때, Swift에서 제공하는 sort 함수의 시간복잡..
문항번호: 15652 N과 M(4) 1. 문제 분석 1 ~ N의 자연수 중 M개를 고른 수열 같은 수 여러번 고르기 가능. 고른 수열은 비 내림차순이어야 함. A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK 2. 풀이 계획 1부터 N까지 가면서 출력을 하게 된다. Back-tracking : 불필요한 탐색을 하지 않고, 이전 단계로 돌아와 다른 후보해를 탐색해 나가는 방법 이미 탐색한 값보다 작은 값의 경우, 다음 input으로 들어올 수 없으므로, 반복문 안에서 더 낮은 숫자의 반복문이 돌지 않도록 설정해주어야 하겠다. -> for 문의 시작점을 현재의 current Value부터 시작하도록 설정해서 위 조건을 만족 시킴. 사실 전형적인 DFS 문항이라고 생각했지만, 문제의 분류표를 살펴보고 난 후, 백..
문항번호: 1로 만들기 1. 문제 분석 정수 X가 사용할 수 있는 연산 X%3 == 0 -> X = X/3 X%2 == 0 -> X = X/2 X = X-1 2. 풀이 계획 입력 제한: 1
목차 문항 분석 Code 결과 및 분석 문항 분석 입력 제한 큐 자료구조를 활용해야 하는 문제 Swift에서 Array를 활용해 큐를 간단하게 구현하게 될 경우 removeFirst() method : O(N) append() method: O(1) 순서에 맞는 자료 값에 대한 위치 계산을 계속 진행해야 하고, 반복문 안에서 점검을 진행해줘야 한다. Code import Foundation let testcase = Int(readLine()!)! var list = [(Int, Int)]() for _ in 0..
문항 분석 입력 제한 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 가치가 더 큰 동전으로 가치가 더 작은 동전보다 더 적은 수를 활용해 합을 만들 수 있다. 가치가 큰 동전을 매번 하나씩 반복문을 통해 뺴는 방법을 사용하면 그만큼 시간적 소요가 크므로 나누기 연산과 나머지 연산을 활용해 접근하면 될 것 같다. Code import Foundation let input = readLine()!.split(separator: " ").map{ Int(String($0)) } var coins = [Int]() let n = input[0]! var k = input..
1. 문제 분석 Xi의 값이 Xj보다 큰 좌표의 개수를 찾아야 한다.(좌표 압축) Xi를 좌표 압축한 결과 = Xi' 입력: X1, X2, ..., XN 출력: X1', X2', ..., XN' 2. 풀이 계획 입력 제한 1 ≤ N ≤ 1,000,000 -10^9 ≤ Xi ≤ 10^9 N^2으로 검증하는 순간 시간 초과는 분명. 3. 계획 검증 전체 반복문 n 개별 반복문 p 각 명령어 실행 시간 1 O(np) 4. 소스 코드 import Foundation var set = Set() var dic = [Int: Int]() _ = Int(readLine()!)! var input = readLine()!.split(separator: " ").map { Int(String($0))! } // O(N)..
1. 문제 분석 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있음. R은 뒤집는 함수, D는 첫 번째 숫자를 버리는 함수 Error: 배열이 비어있는데 D를 사용한 경우 예제 입력: 1) Testcase 수 2) p : 수행할 함수 (String) 3) n : 배열에 들어있는 수 개수 4) [xi,...] : 수가 들어가 있는 배열 제한 조건 : Sum(P) + n tail } } import Foundation final class FileIO { private let buffer:[UInt8] private var index: Int = 0 init(fileHandle: FileHandle = FileHandle.standardInput) { buffer = Array(try! fileHand..