반응형

Programming 183

[알고리즘] 5강 빠른 정렬(Quick Sort)

빠른 정렬은 분할정복법으로 한다. merge와 비슷하지만 다른 점은 합병 단계에 아무것도 하지 않는 다는 것이다. 분할정복법 분할 : 배열을 다음과 같은 조건이 만족되도록 두 부분으로 나눈다. elements in lower parts ≤ elements in upper parts 기준을 pivot 이라 하고 해당 값을 기준으로 왼쪽은 작은 값, 오른쪽은 큰 값이 오도록 한다. 정복 : 각 부분을 순환적으로 정렬한다. (recursive) 합병 : nothing to do (아무것도 하지 않음) 정복 작업을 하게 되면 전체가 정렬된 것으로 본다 시간복잡도 평균 - O(NlogN) / 최악 - O(n^2) 의사 코드로 표현하기(pseudo-code) /// data[p...r] 원소를 정렬한다. func ..

[알고리즘] 4강 병합정렬 (merge sort)

4강 합병 정렬(merge sort) 합병 정렬은 다음과 같은 단계를 가진다 분할 : 해결하고자 하는 문제를 작은 크기의 동일한 문제들로 분할 정복 : 각각의 작은 문제를 순환적으로 해결 합병 : 작은 문제의 해를 합하여(merge) 원래 문제에 대한 해를 구함 [6, 4, 1, 2, 3, 5, 7, 8] 을 예시로 합병 정렬하면 아래 그림과 같은 단계로 정렬이 진행된다. 1차원 배열을 가장 작은 단위, 즉 1의 단위까지 쪼갠다. 가장 작은 단위로 쪼갠 후 배열의 왼쪽/오른쪽 값을 비교한다. 작은 값을 새 배열에 추가하고, 다음 작은 값을 새 배열에 추가한다. 비교하는 과정하고 추가하는 과정이 종료되는 어느 한쪽 배열에 값은 남게 되는 데 이때 반복문을 이용해 왼쪽 배열부터 새 배열에 모두 추가하고, 오..

Introducing the Create ML App 정리 - WWDC2019

WWDC 영상 링크 - Introducing the Create ML App - WWDC 2019 - Videos - Apple Developer Create ML App Create ML 앱을 사용해서 머신 러닝에 관한 전문적인 지식이 없더라도 머신 러닝 모델을 구축하고 학습시키고 배포할 수 있음 https://developer.apple.com/kr/machine-learning/create-ml/ 새로운 모델 (활동, 소리 추가) 새로운 워크 플로우 모델 템플릿 물체 인식, 활동 및 음향 분류, 추천 제공을 위한 모델 구축 텍스트 분류를 위해 단어 임베딩 및 전이 학습 활용 가능 다중 모델 학습 동시에 서로 다른 데이터세트를 사용하여 다중 모델 학습 미리보기 출력탭에서 학습된 모델을 미리볼 수 있음..

Programming/WWDC 2020.03.06

[알고리즘] 3강 기본적인 정렬 알고리즘 정리

3강 기본적인 정렬 알고리즘 정리 정렬 알고리즘 종류 simple, slow bubble sort insertion sort selection sort quick quick sort merge sort heap sort O(N) radix sort 1. Selection Sort (선택 정렬) 선택 정렬은 배열의 값 중 하나를 선택해 기준으로 두고 정렬하는 알고리즘이다. data[Int] 변수가 있을 때 배열의 data[i]을 기준으로 두어 변수에 값을 저장한다. (data[i]을 배열의 min 값으로 예상) min 값과 data[i+1] 값을 비교하여 data[i+1] > min 이면 min에 data[i+1] 값을 대입한다. data[i] 과 min 값을 swap 한다. 1~3번까지 반복한다. // ..

[알고리즘] 순환(Recursive) 개념과 기본 예제 3 정리

순환(Recursive) 개념과 기본 예제 3 정리 Designing Recursion; 순환 알고리즘의 설계 1. 순환 알고리즘 설계 적어도 하나의 base case, 즉 순환되지 않고 종료되는 case가 있어야 함 모든 case는 결국 base case로 수렴해야 함 KeyPoint - 암시적(implicit) 매개변수를 명시적(explicit) 매개변수로 바꾸어라 2. 예제 - 순차 탐색 data[0]에서 data[n-1] 사이에서 target을 검색한다 // 6. 순차 탐색 - 변경 전 func search(data: [Int], n: Int, target: Int) -> Int { for i in 0.. 배열의 시작 인덱스를 뜻하는 암시적 매개변수 if data[i] == target { ret..

[알고리즘] 순환(Recursive) 개념과 기본 예제 2 정리

순환(Recursive) 개념과 기본 예제 2 정리 Recursive Thinking; 순환적으로 사고하기 1. Recursion은 수학 함수 계산에만 유용한가? → 다른 많은 문제들을 recursion으로 해결할 수 있다 많은 예제들 문자 개수 세기 문자열을 뒤집어 출력하기 2진수로 변환하여 출력 배열의 합 구하기 데이터 파일로 부터 n개의 정수 읽어 오기 ... 1. 2진수 변환 출력 예제 // 4. 2진수로 변환하여 출력 func printBinary(n: Int) { // 음이 아닌 정수 n을 이진수로 변환하여 인쇄한다 if n < 2 { print(n, terminator: "") } else { printBinary(n: n / 2) // n을 2로 나눈 몫을 먼저 2진수로 변환하여 인쇄한 후..

[알고리즘] 순환(Recursive) 개념과 기본 예제 1 정리

순환(Recursive) 개념과 기본 예제 1 정리 순환(Recursive) 자기 자신을 호출하는 함수 1. 순환은 항상 무한 루프에 빠질까? 단순 호출만 하면 발생 가능 // 1. 무한 루프 예제 func infinityLoop() { print("Hello, World!") infinityLoop() } infinityLoop() recursion이 적절한 구조를 가지게 해서 무한 루프에 빠지지 않도록 함 2. 적절한 구조? func sum(n: Int) -> Int { if n == 0 { // Base Case - n이 0이면 종료 return 0 } else { return n + sum(n: n-1) // Recursive Case - 반복하다가 n이 0이 되는 순간이 온다 } } Base C..

Introducing SwiftUI: Building Your First App 정리 - WWDC2019

Introducing SwiftUI: Building Your First App - WWDC 2019 - Videos - Apple Developer Introducing SwiftUI: Building Your First App - WWDC 2019 - Videos - Apple Developer See SwiftUI in action! Watch as engineers from the SwiftUI team build a fully-functioning app from scratch. Understand the philosophy... developer.apple.com 아래 내용은 WWDC2019 영상과 SwiftUI 소개 글을 조합하여 정리함 (WWDC 영상 가운데 나오는 SwiftUI의 매커니즘..

Programming/WWDC 2020.03.01

Advances in Speech Recognition 정리 - WWDC2019

Advances in Speech Recognition - WWDC 2019 - Videos - Apple Developer Advances in Speech Recognition - WWDC 2019 - Videos - Apple Developer Speech Recognizer can now be used locally on iOS or macOS devices with no network connection. Learn how you can bring text-to-speech... developer.apple.com 음성 인식 변경 내용 macOS, AppKit, iPad 앱 지원 50개 이상의 언어 지원 장치 인식 지원 (On-Device) 으로 앱에서는 네트워크 연결에 의존할 필요 없음 장치 ..

Programming/WWDC 2020.02.24
728x90
반응형