swift 176

Swift 디자인패턴 FlyWeight Pattern (플라이웨이트 패턴)

Swift 디자인패턴 FlyWeight Pattern (플라이웨이트) 플라이웨이트 패턴은 메모리 사용량과 처리 과정을 최소화하기 위한 구조 패턴. 히스토리2022-06-09: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경 FlyWeight Pattern메모리를 효율적으로 사용하는 디자인 패턴으로, 공유 가능한 상태(공통 속성)를 분리하여 객체 생성 비용을 줄이는 방법을 제공대량의 객체를 생성해야 할 때 유용특히 반복적인 데이터를 다루는 경우 메모리 사용량을 크게 줄일 수 있음캐시를 구현하는데도 사용할 수 있음플라이웨이트 패턴은 일반적으로 3가지 개념으로 구성됨Intrinsic State: 공유 가능한 상태로 객체 간 공통된 데이터Extrinsic ..

Swift 디자인패턴 Facade Pattern (퍼사드 패턴)

Swift 디자인패턴 Facade Pattern (퍼사드 패턴) 퍼사드 패턴은 복잡한 시스템의 인터페이스를 단순화하여 사용자가 시스템을 더 쉽게 사용할 수 있도록 하는 구조 패턴 히스토리2022-06-07: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Facade Pattern여러 개의 서브시스템을 하나의 통합된 인터페이스로 감싸서 클라이언트가 복잡한 내부 구조를 알 필요 없이 간단하게 기능을 사용할 수 있도록 제공여러 서브시스템을 하나의 간단한 인터페이스로 통합클라이언트는 서브시스템의 세부 사항에 의존하지 않고 Facade를 통해 필요한 기능 호출시스템 내부 구조가 변경되더라도 Facade 인터페이스가 변하지 않으면 클라이언트 코드에 영향..

Swift 디자인패턴 Multicast Delegate Pattern (멀티캐스트 딜리게이트 패턴)

Swift 디자인패턴 Multicast Delegate Pattern (멀티캐스트 딜리게이트 패턴) 멀티캐스트 델리게이트 패턴은 델리게이트 패턴을 확장하여, 하나의 객체가 여러 개의 델리게이트에게 알림을 전송. 히스토리2022-06-07: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 예제 변경 Multicast Delegate Pattern멀티캐스트 객체가 델리게이트 객체와의 관계가 일대일이 아닌 일대다로 확장되며, 여러 개의 델리게이트 객체가 이벤트를 수신하고 반응할 수 있음이 패턴의 핵심은 멀티캐스트 델리게이트 헬퍼 클래스로, 이 클래스는 여러 델리게이트를 관리하고, 델리게이트 객체들이 이벤트를 받을 수 있도록 함.헬퍼 클래스를 통해 한 객체가 여러 델리게이트에게 동일한 이벤트를..

Swift 디자인패턴 State Pattern (상태 패턴)

Swift 디자인패턴 State Pattern (상태 패턴) State Pattern은 객체의 내부 상태에 따라 동작이 변경되도록 설계하는 행동 패턴.  히스토리2022-05-30: 디자인 패턴 스터디 정리2024-11-27: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경  State Pattern상태 패턴을 사용하면 객체의 상태를 별도의 상태 클래스로 추상화하고, 객체는 자신의 상태를 바꾸면서 동작을 동적으로 변경할 수 있음Context: 상태를 관리하고, 현재 상태에 따라 행동을 위임하는 클래스State: 공통 인터페이스 또는 추상 클래스 정의 모든 Concrete 클래스는 해당 인터페이스 구현Concrete State: State 인터페이스를 구현한 클래스로 상태별 고유 동작 저의상태..

Swift 디자인패턴 Prototype Pattern (프로토타입 패턴)

Swift 디자인패턴 Prototype Pattern (프로토타입 패턴) Prototype 패턴은 객체를 새로 생성하는 대신, 기존 객체를 복사하여 새로운 객체를 만드는 생성 패턴.  히스토리2022-05-28: 디자인 패턴 스터디 정리2024-11-27: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경Prototype Pattern객체를 빠르게 생성하거나 런타임에 객체의 구조를 동적으로 변경해야 할 때 유용 Prototype Pattern은 일반적으로 3개지 개념으로 구성됨Prototype Interface: 객체를 복사할 수 있는 인터페이스(clone) 정의Concrete Prototype: Prototype Interface를 구현하며, 복사 가능한 객체를 생성Client: Prototy..

[Swift] BOJ 1766 문제집

BOJ 1766 문제집 ✅ 이것도 위상정렬 문제입니다. 위상정렬 알고리즘은 쉬운데 어느때에 사용해야할 지 판단하는게 중요하다. 물론 위상정렬 알고리즘 포스팅에도 적어 두었지만, 방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것'이다. 쉽게 말해서 선수과목 같은 조건이 있는 경우에 사용한다. ✅ 코드 알고리즘은 줄 세우기 알고리즘과 같다. 다만, queue를 sort해야하는 부분만 조금 다르며, queue의 경우에는 줄 세우기는 데이터가 커서 index로 접근하지만 이 문제에서는 removeFirst로 처리한다. 2022.05.24 - [코딩테스트] - [Swift] BOJ 2252 줄 세우기 //https://www.acmicpc.net/problem/1766 import Foun..

SwiftUI Toast, popup

SwiftUI Toast, popup 오픈소스를 활용해서, 팝업 및 토스트 UI를 처리하는 부분을 기술.직접 구현해도 크게 어렵지 않으나, 개인 앱 개발 시 오픈소스를 활용함으로써 본질에 더 집중할 수 있다는 이점. 히스토리2022.05.23. 15:36초기 포스팅 PopupView 2점대 버전2024.11.18. 02:23PopupView 예제 개선 및 3점대 버전으로 재정리주의: 해당 오픈소스를 확장 개발하기 위해 PR 및 이슈를 검토하던 중, 메인테이너 분이 바쁘셔서 문제점을 다른 작업자의 PR을 고스란히 넣어주고 있음하지만, 개인 앱 개발에서 크리티컬한 문제가 되지 않아서 재정리 오픈소스 링크https://github.com/exyte/PopupView GitHub - exyte/PopupView..

[SwiftUI] QRcodeReader

QRcodeReader ✅ QRcodeReader를 알아보자. 코드는 어렵지 않다. 눈여겨 볼 점은 하나의 파일에서 여러개의 뷰를 생성하는 것을 볼 수 있겠다 🟠 아래는 오픈소스 !_! https://github.com/twostraws/CodeScanner GitHub - twostraws/CodeScanner: A SwiftUI view that is able to scan barcodes, QR codes, and more, and send back what was found. A SwiftUI view that is able to scan barcodes, QR codes, and more, and send back what was found. - GitHub - twostraws/CodeScan..

[Swift] BOJ 4386 별자리 만들기✨

BOJ 4386 별자리 만들기✨ ✅ 별자리 만들기 문제이다. 알고리즘은 크루스칼 알고리즘인데 간선의 정보를 직접 구해야 한다. 간선의 정보를 다 구하려면 2중 for문을 거쳐야해서 이게 맞나 싶었는데, 데이터 수가 크지 않아서 가능했다. 크루스칼을 풀면서 자주 실수를 하는데, 그것은 크루스칼 알고리즘 쪽에 정리해 두었다. ✅ 코드 import Foundation let v = Int(readLine()!)! // 별의 갯수 var input: [[Double]] = [] // [x,y] 좌표들의 list var parent = Array(0...v) // // 2차원 배열로 세팅함. for _ in 0..