전체 글
-
[Algorithm/Swift] Programmers 삼각형의 완성조건 (1)Apple /Algorithm 2023. 1. 10. 08:41
다음부터는 .max()를 사용하지 않고 문제를 풀도록 노력해야겠다. func solution(_ sides:[Int]) -> Int { let maxValue = sides.max()! let sumArray = sides.reduce(0, +) return sumArray - maxValue Int { var sortedSides = sides.sorted() return sortedSides[0] + sortedSides[1] > sortedSides[2] ? 1 : 2 }
-
[RxSwift] Infallible RxSwift 6+Apple /RxSwift 톺아보기 2023. 1. 8. 22:26
Infallible 지난번 설명한 Observable와 유사하지만 Infallible는 오직 성공의 값만 방출합니다. Infallible > Event > Observable Infallible는 2가지를 방출합니다. 1. Infallible > Next > Observable 2. Infallible > Completed > Observable let observable = Observable.create { observer in observer.onNext("Hello, Observable") observer.onCompleted() return Disposables.create() } let infallible = Infallible.create { observer in observer(.next(..
-
[Algorithm/Swift] Time complexity를 고려한 함수Apple /Algorithm 2023. 1. 8. 03:12
공부하기 좋게 데미안님이 Time complexity를 함수별로 작성해주셔서 가져왔다. Array append(_ newElement: Element) 평균 시간 복잡도는 O(1)입니다. 최악의 시간복잡도 O(N)입니다. 최악의 상황은 메모리를 재할당 해야 할 때입니다.(C++ Vector와 유사, exponential로 크기가 증가합니다.) append(contentsOf:) 평균 시간 복잡도는 O(M)입니다.M은 새로운 Elements의 개수입니다. insert(_ newElement: Element, at i: Int) O(N)입니다. i가 마지막 index일 경우, append와 시간 복잡도가 같습니다. count O(1)입니다. subscript(_:) read는 항상 O(1), write는 일..
-
[Algorithm/Swift] Programmers / 햄버거 만들기Apple /Algorithm 2023. 1. 8. 03:07
문제 https://school.programmers.co.kr/learn/courses/30/lessons/133502?language=swift 풀이 1-2-3-1 의 숫자가 연속적으로 나열되면 햄버거가 만들어진다. 간단하게 stack로 만들어서 풀이하였다. func solution(_ ingredient:[Int]) -> Int { var stack:[Int] = [] var hambuger = 0 for i in ingredient { stack.append(i) if stack.count < 4 { continue } if stack.suffix(4) == [1,2,3,1] { stack.removeLast(4) hambuger += 1 } } return hambuger } print(solu..
-
[Swift] Closures 톺아보기Apple /Swift 톺아보기 2023. 1. 6. 00:47
클로저는 Objective-C 에서는 Block, Java에서는 Lambda라고 불리는 익명의 함수입니다. Swift에서는 Closures 라고 불리고 함수와 호환이 가능한 동일한 함수지만 함수에서 Named Closures(Global, Nested Function), Unnamed Closures(Anonymous Fuction)로 나뉩니다. 오늘은 잘모르는 Closures 특징에 대해서 자세히 알아봅니다. Closures는 argument Label을 사용하지 않습니다. 클로저는 항상 문법 최적화를 좋아합니다. let m1 = { (s1: String) -> String in return "Hello, \(s1)" } // "Hello, Moon" m1("Moon") -----------------..
-
[Algorithm/Swift] Codility / DistinctApple /Algorithm 2022. 12. 28. 01:55
문제 https://app.codility.com/programmers/lessons/6-sorting/distinct/ 풀이 뭐지,,너무 쉬운거아냐 ㅇ_ㅇ ? 이렇게 푸는게 맞나,,, 주어진 배열에서 고유한 요소를 찾아 카운트를 리턴하면 됩니다. Code O(N*log(N)) or O(N) public func solution(_ A : inout [Int]) -> Int { let arrayToSet = Set(A) return arrayToSet.count }