일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- gitlab
- 동작과정
- 오토레이아웃
- apple intelligence
- cleanarchitecture
- rxswift
- RxCocoa
- swift
- LLM
- CICD
- Autolayout
- CI/CD
- OperationQueue
- swift알고리즘
- ReactiveX
- AI
- 애플인텔리전스
- Content Compression Resistance priority
- ai expo
- gitlabci/cd
- IOS
- mvvm
- Content Hugging priority
- 알고리즘
- 자료구조
- 클린아키텍처
- RxSwift요약
- 백준
- 동시성프로그래밍
- Union-Find
- Today
- Total
목록swift (18)
JosephCha의 개발일지
분할 정복 알고리즘 정의 분할 정복 알고리즘 (Divide and Conquer) Divide: 문제를 하나 또는 둘 이상으로 나눈다. Conquer: 나눠진 문제가 충분히 작고, 해결이 가능하다면 해결하고, 그렇지 않다면 다시 나눈다. 이진 탐색 정의 Divide: 배열을 두 개의 서브 배열로 나눈다. Conquer 검색할 숫자 (search) > 중간값 이면, 뒷 부분의 서브 배열에서 검색할 숫자를 찾는다. 검색할 숫자 (search) Bool { if dataArray.count == 1 && dataArray[0] == sea..
정의 정렬할 배열을 절반으로 잘라 비슷한 크기의 두 부분의 배열로 나눈다. (split) 각 부분 배열을 재귀적으로 합병 정렬을 이용해 정렬한다. 두 부분 배열을 다시 하나의 정렬된 배열로 합병한다. // 병합정렬 func merge(left: [Int], right: [Int]) -> [Int]{ var merged = [Int]() var leftPoint = 0 var rightPoint = 0 // case1 - left/right 둘다 있을때 while left.count > leftPoint && right.count > rightPoint { if left[leftPoint] > right[rightPoint] { merged.append(right[rightPoint]) rightPoint..

정의 입력 크기가 작은 부분 문제들을 해결한 후, 해당 부분의 답을 이용해, 전체 크기의 문제를 해결하는 알고리즘 상향식 접근법 Memoization 기법: 프로그램 실행 시, 이전에 계산한 값을 저장하여, 다시 계산하지 않도록 하여 전체 실행 속도를 빠르게 하는 기술 피보나치 수열 피보나치 수열 문제 재귀함수 활용 // recursive func fibo(_ num: Int) -> Int { if num Int { var caches = [Int].init(repeating: 0, count: num + 1) caches[0] = 0 caches[1] = 1 for index in 2...num { caches[index] = caches[index-1] + caches[index - 2] } retu..
선택 정렬 (selection sort) 이란? 다음과 같은 순서를 반복하며 정렬하는 알고리즘 주어진 데이터 중, 최소값을 찾음 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복함 func SelectionSort(unSortedArray: [Int]) -> [Int] { var unSortedArray = unSortedArray for index in 0..
삽입 정렬 (insertion sort) 란 삽입 정렬은 두 번째 인덱스부터 시작 해당 인덱스(key 값) 앞에 있는 데이터(B)부터 비교해서 key 값이 더 작으면, B값을 뒤 인덱스로 복사 이를 key 값이 더 큰 데이터를 만날때까지 반복, 그리고 큰 데이터를 만난 위치 바로 뒤에 key 값을 이동 func insertionSort(unSortedArray: [Int]) -> [Int] { var unSortedArray = unSortedArray for index in 0.. unSortedArray[index2] { let temp = unSortedArray[index2] unSortedArray[index2] = unSortedArray[index2-1] unSortedArray[index2..
버블정렬(bubble sort)이란? 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘 데이터가 네 개 일때, 예시 ex) unSortedArray = [1, 9, 3, 2] 1차 로직 적용 1 와 9 비교, 자리바꿈없음 [1, 9, 3, 2] 9 와 3 비교, 자리바꿈 [1, 3, 9, 2] 9 와 2 비교, 자리바꿈 [1, 3, 2, 9] 2차 로직 적용 1 와 3 비교, 자리바꿈없음 [1, 3, 2, 9] 3 과 2 비교, 자리바꿈 [1, 2, 3, 9] 3 와 9 비교, 자리바꿈없음 [1, 2, 3, 9] 3차 로직 적용 1 과 2 비교, 자리바꿈없음 [1, 2, 3, 9] 2 과 3 비교, 자리바꿈없음 [1, 2, 3, 9] 3 과 9 비..

Content Hugging priority 1~3번 모두 해당 시 필요한 우선도 1. 컴포넌트(ex. UILabel)들의 Width 제약과 Height 제약을 선언하지 않은 상태 2. 컴포넌트들 사이에 제약을 설정한 상태 3. 컴포넌트들에 대해, 프레임 공간이 다 채워지지 않은 상태 * 1~3번 모두 해당된다면 적어도 하나의 컴포넌트의 컨텐츠 고유 사이즈가 더 늘어나야 될 상황이다. 우선도가 낮은 컴포넌트의 사이즈가 콘텐츠 고유 사이즈보다 늘어나고, 우선도가 높은 컴포넌트는 콘텐츠 고유 사이즈보다 사이즈가 커지지 않도록 제한한다. 예시) Content Compression Resistance priority 1~3번 모두 해당 시 필요한 우선도 1. 컴포넌트(ex. UILabel)들의 Width 제약과..

https://www.acmicpc.net/problem/10872 재귀 단계 피보나치 수 역시 단순 for문으로도 구할 수 있지만, 학습을 위해 재귀를 써 봅시다. www.acmicpc.net 코드 import Foundation let a = readLine() func recursive(_ n:Int) -> Int{ if n == 0 { return 0 } else if n == 1{ return 1 } else { return n * recursive(n-1) } } let b = Int(a!) print(recursive(b!)) 설명 컴공 1학년때, 나를 괴롭히던 재귀 함수다. 팩토리얼은 해당 숫자에서 1까지의 곱을 의미한다. 무슨소린지 헷갈리니, 예시를 들자면 ex) 5!(5의 팩토리얼) -..