목록swift (4)
DailyCode
깊이 우선 방식으로 정점을 방문하여 그래프를 탐색하는 그래프 탐색 알고리즘이다. 방문한 각 노드의 부모 노드를 추적하여 소스 노드와 그래프의 다른 노드 사이의 경로를 구성한다. 🚀 알고리즘 논리 DFS는 스택을 사용하여 방문한 노드를 추적한다. 소스 노드에서 시작하여 각 이웃 노드를 탐색하는 방식으로 작동한다. 🏁 알고리즘 동작 과정 시작점을 스택에 추가 스택이 비어있지 않다면, 스택에서 정점을 빼서 이웃 정점을 방문 이웃을 방문한 적이 없는 경우, 방문한 것으로 표시하고 스택에 추가한 후 2단계를 반복 이웃을 방문한 경우, 건너뛰고 2단계를 계속 진행 모든 정점을 방문했다는 것을 나타내는 스택이 비워질 때까지 2~4단계를 반복 (재귀적) ⏲ 시간 복잡도 O(V+E) (V: 노드의 수, E: 그래프의 가..
너비 우선 탐색(BFS) 다른 레벨로 이동하기 전에 같은 뎁스에 있는 모든 노드를 탐색하는 그래프 탐색 알고리즘 소스 노드에서 시작하여 그래프를 뎁스로 탑색하며, 다음 뎁스로 내려가기 전에 인접한 모든 노드를 방문한다. 개요 가중치가 없는 그래프에서 최단 경로를 찾거나, 특정 최적화에서 최적의 솔루션을 찾는데 널리 사용된다. 동작 과정 BFS 알고리즘은 큐(Queue) 자료구조를 이용하여 구현. 시작노드 선택 큐를 생성하고 시작노드를 큐에 대기 시작노드를 방문한 노드로 표기 큐가 비워질 때 까지 5,6 반복 큐에서 첫번째 노드를 큐에서 해제하고 방문한 노드로 표기 큐에 대기중인 노드 중 아직 방문하지 않은 인접 노드 모드 탐색, 그 후 이 노드들을 방문한것으로 표기하고 큐에 대기열 추가 모든 노드 방문시..
의존관계 역전 법칙(Dependency Inversion Principle, ISP)은 객체 지향 프로그래밍에서 SOLID 원칙 중 하나입니다. 이 원칙은 상위 모듈과 하위 모듈 간의 의존성을 최소화하고, 추상화를 통해 서로간의 결합도를 낮추는 것을 목표로 합니다. 이를 통해 시스템의 확장성, 재사용성, 테스트 용이성 등이 향상되며, 유지보수가 용이해집니다. 이를 구현하기 위해 의존성 주입(Dependency Injection)과 같은 기법이 사용되곤 합니다. 의존성 주입은 별도의 게시글로 소개 하겠습니다. 정의 시스템은 추상화에 의존하고, 구체화에 의존하면 안 된다 상위 모듈은 하위 모듈의 구현에 의존하면 안 된다. 하위 모듈(Class)이 상위 모듈에 정의한 추상 타입(Protocol)에 의존해야 ..

MVVM(Model - View - ViewModel) MVVM(Model-View-ViewModel)은 소프트웨어 아키텍처 패턴 중 하나로, Model, View, ViewModel이라는 세 가지 역할로 구성됩니다. MVP(Model-View-Presenter) 패턴과 유사하지만, MVP의 Presenter 역할을 ViewModel이 대신합니다. MVVM은 UI와 비즈니스 로직을 명확하게 분리하여 관리하고, 코드 유지보수성을 높이는 장점이 있습니다. 1.1 아키텍처 패턴 구조 Model - 일반적으로 앱에서 사용하는 데이터 모델이나 API와 상호 작용하는 객체입니다. 비즈니스 로직이 모델에 포함됩니다. View - UI와 관련된 코드입니다. Command Pattern을 이용하여 뷰모델을 구독하며(Pr..