본문 바로가기

분류 전체보기303

[Swift] 우선순위 큐(Priority Queue) 구현하기 우선순위 큐는 요소가 삽입될 때마다 우선순위에 따라 정렬되며, 가장 높은 우선순위의 요소가 먼저 처리됩니다. 이전에 구현한 Heap을 사용하여 우선순위 큐를 쉽게 구현할 수 있습니다. 아래는 PriorityQueue 구조체를 제네릭으로 정의한 코드입니다.struct PriorityQueue { private var heap: Heap var isEmpty: Bool { return heap.isEmpty } var count: Int { return heap.count } var peek: T? { return heap.peek } init(sort: @escaping (T, T) -> Bool) { he.. 2024. 9. 27.
[Swift] 힙(Heap) 구현하기 Heap은 트리 기반의 자료구조로, 특정 우선순위에 따라 요소들을 정렬하는 기능을 제공합니다. Heap은 크게 두 가지 유형이 있습니다. 최소 힙은 작은 값이 먼저 나오도록 정렬하고, 최대 힙은 큰 값이 먼저 나오도록 정렬합니다. 제네릭을 이용해 Heap 구조체를 정의하고 주요 기능을 구현해보겠습니다.struct Heap { private var elements: [T] = [] private let priorityFunction: (T, T) -> Bool var isEmpty: Bool { return elements.isEmpty } var count: Int { return elements.count } var p.. 2024. 9. 27.
[Swift] Dequeue 구현하기 Dequeue는 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조로, 이를 통해 큐와 스택의 기능을 모두 수행할 수 있습니다. Dequeue를 구조체와 배열을 이용해 구현할 수 있습니다.제네릭을 활용하여 Dequeue 구조체를 정의하고, 주요 기능들을 구현해보겠습니다. struct Deque { private var enqueue: [T] = [] // 뒤쪽에서 요소를 추가/제거하는 배열 private var dequeue: [T] = [] // 앞쪽에서 요소를 추가/제거하는 배열 var count: Int { return enqueue.count + dequeue.count } var isEmpty: Bool { return enque.. 2024. 9. 27.
[Swfit] 큐(Queue) 구현하기 Queue를 구조체와 배열을 이용해 구현할 수 있습니다.먼저 제네릭을 활용해 Queue 구조체를 정의하고, 주요 기능을 구현해보겠습니다. struct Queue { private var queue: [T] = [] var isEmpty: Bool { return queue.isEmpty } var count: Int { return queue.count } var peek: T? { return queue.first } mutating func enqueue(_ element: T) { queue.append(element) } mutating func dequeue() .. 2024. 9. 27.
[Swift] 스택(Stack) 구현하기 Stack을 구조체와 배열로 구현할 수 있습니다.먼저 제네릭을 이용해 Stack 구조체를 정의하고, 주요 기능을 구현해보겠습니다. struct Stack { private var stack: [T] = [] var isEmpty: Bool { return stack.isEmpty } var count: Int { return stack.count } var peek: T? { return stack.last } mutating func push(_ element: T) { stack.append(element) } mutating func pop() -> T? { .. 2024. 9. 27.
[RxSwift] Observable Observable 이란?Observable은 RxSwift에서 데이터의 스트림을 나타냅니다. 단순히 말하자면, Observable은 시간이 지남에 따라 여러 값을 방출할 수 있는 객체입니다. 이러한 값들은 사용자 입력, 네트워크 요청 응답, 파일 입출력 등 다양한 소스에서 발생할 수 있습니다. Observable은 세 가지 유형의 이벤트를 방출할 수 있는데, 이는 next, error, completed입니다.nextObservable이 새로운 데이터 요소를 방출할 때 발생합니다.Observable은 여러 개의 next 이벤트를 발생시킬 수 있습니다.error에러가 발생했을 때 방출되며, 이후에는 더 이상의 이벤트가 발생하지 않습니다.completedObservable이 모든 데이터 요소의 방출을 완료.. 2024. 6. 7.
[RxSwift] RxSwift란? iOS 개발자라면 RxSwift에 대해 들어본 적이 있을 것입니다. RxSwift는 Swift 언어에 반응형 프로그래밍을 도입하는 강력한 프레임워크입니다. 이번 포스트에서는 RxSwift의 핵심 개념을 설명하고, iOS 개발에서 RxSwift가 어떻게 유용하게 사용될 수 있는지에 대해 알아보겠습니다.RxSwift란?RxSwift는 비동기적이고 이벤트 기반의 코드를 관찰 가능한 시퀀스와 함수형 스타일의 연산자를 사용하여 구성할 수 있게 해주는 라이브러리입니다. RxSwift는 ReactiveX (Reactive Extensions) 패밀리의 일부로, 비동기 데이터 스트림을 다루기 위한 인기 있는 패러다임입니다. 주요 개념ObservableRxSwift의 핵심 단위입니다.Observable은 시간에 따라 이.. 2024. 6. 3.
[SwiftUI] Text Text A view that displays one or more lines of read-only text 한 줄 이상의 읽기 전용 text를 표시하는 뷰입니다. Text 뷰를 만들고 그 안에 표시할 텍스트를 지정합니다. import SwiftUI struct ContentView: View { var body: some View { Text("Hello, SwiftUI!") } } 텍스트 스타일 적용하기 .font()를 사용해 텍스트의 글꼴 크기와 스타일을 지정할 수 있습니다. Text("Hello, SwiftUI!") .font(.title) .title, .caption 등 사전에 정의된 텍스트 스타일을 사용할 수 있습니다. Text("Hello, SwiftUI!") .font(.system(s.. 2024. 4. 18.
[SwiftUI] Stack (VStack/HStack/ZStack) Stack 뷰를 수직 또는 수평으로 정렬하는 데 사용되는 컨테이너입니다. Stack을 사용해서 여러개의 뷰를 그룹화하고 레이아웃을 구성할 수 있습니다. VSatck 뷰를 수직으로 쌓는 스택입니다. 선언된 순서대로 뷰들은 위에서 아래로 쌓이게 됩니다. import SwiftUI struct ContentView: View { var body: some View { VStack { Text("First View") Text("Second View") Text("Third View") } } } Alignment VStack에서 alignment 매개변수를 통해 하위 뷰의 정렬 방법을 지정할 수 있습니다. .leading을 선택하면 왼쪽을 기준으로, .trailing을 선택하면 오른쪽을 기준으로, .cente.. 2024. 4. 8.
[SwiftUI] Property Wrappers Property Wrappers property wrapper는 프로퍼티에 custom 한 동작을 추가할 수 있는 기능입니다. 프로퍼티에 대한 접근을 래핑 하여 추가 로직이나 동작을 캡슐화 합니다. 이를 통해 코드의 재사용성, 가독성 및 유지 보수성을 향상시킬 수 있습니다. @State view의 상태를 관리하는 데 사용됩니다. view 내부 데이터가 변경되면 자동으로 view를 업데이트합니다. 가변 값으로 취급되며, 뷰가 생성될 때 해당 값이 초기화되고, 사용자 상호 작용 또는 외부 이벤트에 따라 값이 변경될 수 있습니다. 뷰 내부에서 사용되기 때문에 private으로 선언하는 것을 권장합니다. import SwiftUI struct ContentView: View { @State private va.. 2024. 4. 4.
반응형