AVKit
·
iOS/Framework
AVKit이란? 이전 포스팅에서 AVFoundation은 여러 미디어 데이터를 다루는데 중점을 둔 프레임워크라고 배웠다.그렇다면 그 데이터를 실제 재생하고 컨트롤하는 UI는 어디에 있을까 ?? 위에 그림을 보면 AVFoundation은 UIKit보다 아래에 있어 표준 UI를 제공해주지 않는다.그러므로 미디어 데이터를 다루는 UI를 만들기 위해서는 AVFoundation보다 아래 계층에 있어야한다. 하지만 이 경우는 상당히 low-level까지의 지식과 많은 작업량이 필요한데 이 때 애플에서는 AVkit이라는 걸 제공하게된다.  역할Create user interfaces for media playback, complete with transport controls, chapter navigation, p..
AVFoundation (1) [AVAsset]
·
iOS/Framework
부스트 캠프의 여정이 어느새 마무리 단계인 그룹미션이 어느새 다음 주로 다가왔다.이번주부터 1주일 정도 개인 공부를 할 수 있는 시간이 있어서 나는 평소에 관심있던 스트리밍쪽 기술을 공부해보려고한다.스트리밍 쪽 공부를 하기 위해 가장 기본이 되는 기술이 AVFoundation이라고 많이 추천을 해주셨다.  이번에 한번 깊이 공부해보자. AVFoundation이란?AVFoundation이란 apple 생태계에서 미디어와 관련된 모든 측면을 다룰 수 있는 매우 유연하고 확장 가능한 프레임워크이다.Work with audiovisual assets, control device cameras, process audio, and configure system audio interactions. 역할1. 미디어 재..
퀵 정렬과 퀵 선택
·
PS/알고리즘
퀵 정렬 개념정해진 pivot을 기준으로 pivot보다 작은 것은 왼쪽 piviot보다 큰 거는 오른쪽으로 배치한다. 퀵 정렬은 크게 2가지 과정으로 이루워진다. partition을 통해 pivot을 기준으로 정렬한다. 재귀적 반복을 통해 잘게 분할한다. 여기서 분할하는 기준은 pivot의 정렬된 이후 위치이다.전체 적인 과정은 아래에서 살펴보자.과정 pviot을 고르 때 가장 오른쪽에 있는 값을 고른다.우리는 두가지 포인터를 사용한다.i = 바뀜을 당할 위치 포인터 , i는 low부터 시작한다. [ 왼쪽 끝에서 시작 ]j = arr를 순회할 포인터 pivot가 비교될  값들  arr[j] pivot 이하라는 것은 왼쪽에 위치해야하므로, i를 증가 즉, 바뀔 공간을 확보한다.이후 j와 i 값을 바꿈 , ..
해시 테이블
·
CS/자료구조
오늘은 멘토님의 갑작스러운 질문에 답변하지 못했던 기억을 되살려 해시테이블을 뿌셔보려고한다.사실 swift에서는 굳이 해시 테이블을 직접 구현해서 쓸일 이 없다 왜냐면 딕셔너리가 있기 때문이다. 하지만 꼭 내가 swift만 공부할거라는 보장도 없고 이번 기회에 내부적으로 어떤식으로 공부하면 다른 언어에서도 자료구조 공부할 떄 도움이 될 것 같다 . 그러면  거두절미하고 바로 들어가보자. 해시 테이블이란?  해시 테이블은 Key - value 형태로 데이터를 저장하는 자료구조 중 하나이며 다음과 같은 특징을 같는다.특징key 값을 해시 함수를 통해 해시 주소값 해시 index(해시 주소값)으로 바꾼다.value에 접근할 때는 위에서 만든 해시 index을 통해 접근한다.해시 테이블의 평균 시간 복잡도는 O..
swift 기본 타입
·
프로그래밍언어/swift
Swift 기본 타입많이 늦은 감이 있지만...  이번 시간에 정리하고 가자. 타입비트범위특징Bool1비트true / false 참과 거짓을 나타내는 논리형 데이터Character가변적 유니코드유니코드 스칼라 값 (최대 21비트)단일 유니코드 문자String가변적 유니코드 문자열 길이에 따라 다름유니코드 문자들의 시퀀스, 길이에 따라 동적으로 크기가 변함Int88비트-128 ~ 1278비트 정수Int1616비트-32,768 ~ 32,76716비트 정수Int3232비트-2,147,483,648 ~ 2,147,483,647-21억 ~ 21억32비트 정수Int6464비트-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807-922경 3,372조 3,685억 4,775..
[백준] 16916 부분 문자열
·
PS/프로그래머스
문제https://www.acmicpc.net/problem/16916 입력s: String = 문자열pattern: String = S의 부분 문자열인지 확인해야할 pattern1 결과ans: Int = 부분문자열이 맡다면 1 아니면 0해석문자열과 패턴이 최대 100만가까이 되는걸 보니 브루투스 포스 brute-force  방식으로는 해결이 불가능해보인다.이 문제는 문자열에서 특정 패턴을 찾아내는 전형적인 kmp 문제  1) lps 배열을 구한 후 2) kmp 를 진행한다. 코드import Foundationfunc computeLPS(_ pattern: [Character]) -> [Int] { let n = pattern.count var lps: [Int] = [Int](rep..