SWiFT(48)
-
[Swift] 접근 제어자(Access Control Levels)
접근 제어자(Access Control Levels)Swift의 접근 제어자는 코드 내에서 접근 가능한 범위를 정의하여 모듈성과 코드의 캡슐화를 향상시키는 데 사용됩니다. Swift에서는 다섯 가지 접근 수준을 제공합니다:1. open특징: 모듈 외부에서 접근 및 재정의 가능.사용 위치: 클래스 및 클래스 멤버에만 사용 가능.목적: 해당 클래스를 다른 모듈에서 확장(상속)하고, 메소드를 재정의하도록 허용.예시: 외부 모듈에서 상속과 오버라이드를 지원해야 하는 경우.open class Car { open func horn() { print("honk") }}open class Morning: Car { override open func horn() { print("..
2024.12.29 -
[iOS] Protocol / 프로토콜 / 개념 의미 요구사항 확장 POP
프로토콜 프로토콜은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의합니다.구조체, 클래스, 열거형은 프로토콜을 채택해서 특정 기능을 수행하기 위한 프로토콜의 요구사항을 실제로 구현할 수 있습니다.어떤 프로토콜의 요구사항을 모두 따르는 타입은 그 프로토콜을 준수한다고 표현합니다.타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야합니다. 즉 프로토콜은 기능을 정의하고 제시할 뿐이지 스스로 기능을 구현하지는 않습니다.공통 인터페이스 정의:서로 다른 타입에 동일한 동작을 강제.의존성 역전:코드의 유연성과 확장성을 증가.추상화:구체적인 구현이 아닌 동작에 집중. 프로토콜의 의미: 구현자와 사용자의 관점1. 구현하는 입장에서의 프로토콜프로토콜..
2024.12.29 -
[Swift] Singleton Multithread Strategy / 싱글톤 멀티스레드 전략
안전한 Singleton Pattern을 위환 Thread-Safe 관리우리는 앱에서 전역적인 리소스 공유, 앱 상태 관리, 네트워크 요청, 로깅 및 분석 등과 같은 곳에서 싱글톤 패턴을 활용합니다.이때 어디서든 동일한 인스턴스에 접근하게 되고, 앱이 복잡해질수록 데이터 레이스가 발생할 가능성이 높아질 수 있습니다. 이때 사용할 수 있는 방안에 대해서 몇 가지 예시를 제시합니다. 1. DispatchQueue를 활용한 데이터 동기화final class Singleton { static let shared = Singleton() private let queue = DispatchQueue(label: "com.singleton.threadsafe", attributes: .concurr..
2024.12.27 -
[Swift] (자료구조) 배열 / Array
1. 배열 (Array)정의: 고정된 순서로 데이터를 저장하는 선형 자료구조.특징:순서가 중요한 데이터 저장에 적합.상수 시간 복잡도(O(1))로 인덱스를 통해 접근 가능.장점:간단하고 사용이 쉬움.순차적 데이터 처리에 적합.단점:크기 변경이 비효율적. Array | Apple Developer DocumentationAn ordered, random-access collection.developer.apple.com // An array of 'Int' elementslet oddNumbers = [1, 3, 5, 7, 9, 11, 13, 15]// An array of 'String' elementslet streets = ["Albemarle", "Brandywine", "Chesapeake"]/..
2024.12.27 -
1446 swift / c++ - 지름길
다이나믹프로그래밍과 다익스트라 두 방법 모두 사용할 수 있습니다. 시간 복잡도시간 복잡도는 O(D + N)입니다.D는 고속도로의 길이, N은 지름길의 수입니다.문제에서 N ≤ 12, D ≤ 10,000이므로, 이 접근 방식은 충분히 효율적입니다. C++ DP 풀이.#include using namespace std;#define INF 1e9int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, d; cin >> n >> d; vector> graph[10001]; for (int i = 0; i > from >> to >> cost; if (to dist(d + 1, INF); dist[0] = 0; for (int ..
2024.10.04