Archive/CS & App
-
[Book] 오브젝트 - 02. 객체지향 프로그래밍 (Object Oriented)Archive/CS & App 2022. 5. 19. 07:35
01 영화 예매 시스템 특정 조건을 만족하는 예매자에게 할인 제공 - 할인 조건 (discount condition) : 상영 시점에 따른 할인 - 순서 조건 (sequence condition) - 기간 조건 (period condition) - 할인 정책 (discount policy) : 특별한 조건에 따른 할인 - 금액 할인 정책 (amount discount policy) - 비율 할인 정책 (percent discount policy) 02 객체지향 프로그래밍을 향해 협력, 객체, 클래스 클래스가 아닌 객체에 초점을 맞출때 - 어떤 객체들이 필요한지 고민하기 - 객체는 기능을 구현하기 위해 협력하는 공동체 도메인의 구조를 따르는 프로그램 구조 도메인 (Domain) : 문제를 해결하기 위해 사..
-
[알고리즘] Combination 조합Archive/CS & App 2022. 5. 6. 23:55
Combination 조합은 서로 다른 n개의 원소를 가지는 어떤 집합에서 순서 상관없이 r개의 원소를 선택하는 것 n개의 원소로 이루어진 집합에서 r개의 원소로 이루어진 부분집합을 만드는 것 n! P(n, k) C(n, k) = ------------- = -------- (n - k)! * k! k! main.swift GitHub - keeplo/SwiftTools: 자료구조 알고리즘 등 직/간접적으로 사용가능한 예제 자료구조 알고리즘 등 직/간접적으로 사용가능한 예제. Contribute to keeplo/SwiftTools development by creating an account on GitHub. github.com // Algorithm/Combination // // Created b..
-
[알고리즘] Permutations 순열Archive/CS & App 2022. 5. 5. 22:49
Permutations 순열 또는 치환은 순서가 부여된 임의의 집합을 다룬 순서로 뒤섞는 연산 n! P(n, k) = -------- (n - k)! main.swift GitHub - keeplo/SwiftTools: 자료구조 알고리즘 등 직/간접적으로 사용가능한 예제 자료구조 알고리즘 등 직/간접적으로 사용가능한 예제. Contribute to keeplo/SwiftTools development by creating an account on GitHub. github.com // Algorithm/Permutation // // Created by Yongwoo Marco on 2022/05/05. // // Marco's Style func permuteCount(_ n: Int, _ k: In..
-
[Book] 오브젝트 - 01. 객체, 설계 (Object Oriented)Archive/CS & App 2022. 5. 5. 00:29
01 티켓 판매 애플리케이션 구현하기 교재에서 제공한 코드를 Swift 로 번역한 코드 // MARK: - 최초 코드 02 무엇이 문제인가 예상을 빗나가는 코드 `Audience`와 `TicketSeller`가 `Theater`의 통제를 받는 수동적인 존재 우리 상식과 다르게 동작 -> 코드 이해하기 어렵다 가장 큰 문제 `Audience`와 `TicketSeller` 변경시 `Theater` 변경해야함 변경에 취약한코드 가방 없거나, 현금아닌 신용카드 등 다양한 가정이 깨지면 코드가 흔들림 (객체 사이의 의존성 문제) 의존성 Dependency : 어떤 객체가 변경될 때 그 객체에서 의존하는 다른 객체도 함께 변경될 수 있음 객체 사이의 "의존성이 과하다 결합도(coupling) 높다" , "의존성 적..
-
[Book] 오브젝트 - 00. 들어가며 (Object Oriented)Archive/CS & App 2022. 5. 4. 22:30
01 패러다임의 시대 객체지향 패러다임에서 함수형 패러다임에 관해 인지하고 있는데.. 또 새로운게 나올까... 궁금하다... 아니.. 두렵다.. 02 프로그래밍 패러다임 Swift 애플의 운영체제용 언어인 Objective-C 와 함께 사용할 목적으로 시작된 새로운 언어로써 장기적으로 사용가능하도록 다양한 패러다임을 수용하고자 한것 같다. Swift는 명령형, 객체지향 기반으로 한 함수형, 프로토콜 패러다임을 지향하는 언어로 볼 수 있다. SwiftUI에서는 선언형 구조까지 가지고 있다. 애플에서 제공하는 대부분의 프레임워크는 객체지향과 프로토콜 지향 구조 Swift 만의 언어에 특성에 대해서 좀 더 깊게 공부해 볼 필요성을 느꼈다. iOS-Swift 관점으로 교재를 공부하고 생각을 남기는 목적입니다. ..
-
[알고리즘] FactorialArchive/CS & App 2022. 5. 4. 21:13
Factorial 팩토리얼 또는 계승은 그 수보다 작거나 같은 모든 양의 정수의 곱 n! = n * (n-1) * (n-2) ﹒﹒﹒ 2 * 1 main.swift GitHub - keeplo/SwiftTools: 자료구조 알고리즘 등 직/간접적으로 사용가능한 예제 자료구조 알고리즘 등 직/간접적으로 사용가능한 예제. Contribute to keeplo/SwiftTools development by creating an account on GitHub. github.com // Algorithm/Factorial // // Created by Yongwoo Marco on 2022/05/04. // func factorial(_ n: Int) -> Int { return (1...n).reduce(1) ..
-
[자료구조] Graph - Minimum Spanning Tree, Kruskal, PrimArchive/CS & App 2021. 6. 26. 22:52
자료구조 07 - 3 / Graph 정의 MST: Minimum Spanning Tree - 사용된 간선들의 가중치 합이 최소인 트리, 모든 정점을 방문하는데 사용되는 최소 비용 경로 Spanning Tree (신장트리) : 순환이 없는 최소 연결 그래프 (간선의 수가 최소) n개 정점 -> n-1개 간선 Kruskal Algorithm - Greedy Method(탐욕적 방법) 을 이용해서 모든 정점을 최소 비용으로 연결, 결정 순간마다 가장 최적의 방법으로 진행 시간 복잡도 O(elog₂e) Union-Find 알고리즘으로 사이클 존재 확인 3. 간선 선택 MST에 destination 정점 넣기 Prim Algorithm - 시작 정점부터 신장트리 집합을 단계적으로 방문하며 확장, 연결된 간선 중 ..
-
[자료구조] Graph - 그래프 탐색 방법Archive/CS & App 2021. 6. 26. 22:12
자료구조 07 - 2 / Graph 탐색방법 너비 우선 탐색 (Breadth First Search: BFS) 최단경로, 임의의 한 정점에서 연결된 모든 정점으로 나가감, Tree의 LeveOrder Trabersal, 자료구조 Queue 사용(정점의 순서 기록) 시간복잡도 O(v+e) vertex 수 + edge 수 깊이 우선 탐색 (Depth First Search: DFS) 임의의 한 정점으로부터 연결된 한 정점으로만 나아간다, 연결된 정점이 없을때까지 방문하고 그 전 단계 정점으로 돌아서 다시 나아간다 자료구조 Stack 사용(방문했던 정점 기록) 시간 복잡도 O(v+e) vertex 수 + edge 수 추가용어 완전 그래프(complete Graph) : 최대 간선 수를 가진 그래프, 모든 정점..