적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

분류 전체보기 568

[Swift 알고리즘] 모두의 약수 (시간제한 1초)

자연수 N이 입력되면 1부터 N까지의 각 숫자들의 약수의 개수를 순서대로 출력하는 프로그램을 작성하세요. 자연수 N (5 String { var result = Array(repeating: 0, count: N) for i in 1...N { for j in stride(from: i, through: N, by: i) { result[j-1] += 1 } } return result.map{ String($0) }.joined(separator: " ") } 속도 비교 테스트 입력값 1번 : O(n^2) 2번 : O(nlogn) 8 0.001959085464477539 0.0020400285720825195 500 0.032768964767456055 0.005385994911193848 10000 ..

Algorithm 2022.12.15

[Swift] Subscripts란? + String은 subscript로 접근이 안되는 이유

class, struct, enum 타입에서 컬렉션, 배열 등의 멤버 요소에 index를 이용하여 간단하게 접근할 수 있는 방법. Swift에서 String은 각 문자를 이루고 있는 메모리의 크기가 가변적이기 때문에 Int 형식의 Subscript로는 접근이 불가하고, associated index 타입으로 String.index를 통해 접근이 가능하다. Subscripts란? https://docs.swift.org/swift-book/LanguageGuide/Subscripts.html Classes, structures, and enumerations can define subscripts, which are shortcuts for accessing the member elements of a c..

[Swift] Any와 AnyObject 비교 및 장단점

Swift는 Type에 민감한 언어이지만, Any와 AnyObject를 사용하면 특정되지 않은 타입에 대해서도 동작을 할 수 있도록 해준다. Any는 모든 유형의 인스턴스를 나타낼 수 있는 범용 타입이고, AnyObject는 모든 클래스 유형의 인스턴스를 나타낼 수 있는 프로토콜. 특정되지 않은 타입에 대해서도 동작을 하도록 특별한 두 가지 타입 Any와 AnyObject를 제공한다. 장점 모든 타입, 모든 클래스 타입을 저장할 수 있다는 장점 단점 매번 타입 체크 및 형변환을 해야하기때문에 필요에 의한 것이 아니라면 사용하지 않는 것이 좋다 참고 : https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html, zeddiOS, 소들이, hayeon

[Swift] Initialization + Convenience init 이란?

Swift에서는 super class에서 상속받은 프로퍼티들을 포함하여, 모든 저장 프로퍼티가 초기 값을 가질 수 있도록 Class 유형에 대해 두 가지 종류의 초기화를 정의한다. 그 두가지가 바로 흔히 init으로 사용하는 기본 Designated init, 그리고 Convenience init. init 에서는 모든 저장 프로퍼티가 반드시 초기화되어야하는데, Convenience init은 init의 파라미터 중 일부를 임의의 기본값으로 설정해서 오류가 나지 않도록 도와주는 보조 이니셜라이저. * init의 보조이기 때문에 미리 선언한 init을 활용해서 사용해야 한다. convenience init 딱히 필요성을 잘 모르겠어서 왜 쓰나 싶었다. custom collectionView cell 만들때..

[Swift] Copy On Write 동작 방식

Copy-on-write란 컴퓨터 프로그래밍에서 리소스의 복제를 효율적으로 구현하기 위한 리소스 관리 기술로, Swift에서는 Collection Type을 복사해서 사용할 때, Value Type의 성능을 최적화하기 위해 COW를 사용한다. 실제 수정이 이뤄질 때 값을 복사해서 메모리에 할당하고, 그 전에는 참조를 통해 불필요한 복사 및 메모리 사용을 줄이고자 하는 것. Copy-On-Write (COW) 란? Copy-on-write (COW), sometimes referred to as implicit sharing or shadowing, is a resource-management technique used in computer programming to efficiently implement..

[Swift] Class의 성능을 향상시킬 수 있는 방법

성능에 영향을 미치는 3가지 Memory Allocation: Stack or Heap Reference Counting: No or Yes Method dispatch: Static or Dynamic (메서드를 호출할 때 메모리를 할당할 때 스택에 value type 의 특징 변수 할당 시 stack에 값 전체가 저장됨 다른 변수에 할당될 때 전체 값이 복사됨 (copy by value) -> 하나를 변경해도 다른 것에 영향 없음 Heap을 안 쓰며 따라서 Reference Counting도 필요 없음 Heap 할당의 문제 할당 시에 빈 곳을 찾고 관리하는 것은 복잡한 과정 무엇보다 그 과정이 thread safe 해야 한다는 점이 가장 큰 문제 (다른 스레드 끼리 충돌이 없어야 되기 때문에 lock..

728x90
반응형