[iOS] Custom Calendar 구현(2)
2024. 5. 15. 23:17
iOS/iOS
저번 포스팅에서 구현했던 Custom Calendar를 Single Selection을 지원하도록 구현해 보자. 자세한 구현은 여기에서 확인해볼 수 있다. https://github.com/jungseokyoung-cloud/iOS-Study/tree/main/Custom%20Calendar iOS-Study/Custom Calendar at main · jungseokyoung-cloud/iOS-StudyiOS Study Archive. Contribute to jungseokyoung-cloud/iOS-Study development by creating an account on GitHub.github.com 우선 이를 구현하기 앞서 고려해야 할 부분들이 있다. 하나의 Selection만을 지원한..
[iOS] Custom Calendar 구현(1) - UI 및 달력 데이터
2024. 5. 15. 23:17
iOS/iOS
이번 포스팅에선 다음과 같이 날짜의 선택이 가능한 Custom Calendar를 구현해 보자. 전체 코드는 여기에서 확인해볼 수 있다. https://github.com/jungseokyoung-cloud/iOS-Study/tree/main/Custom%20Calendar iOS-Study/Custom Calendar at main · jungseokyoung-cloud/iOS-StudyiOS Study Archive. Contribute to jungseokyoung-cloud/iOS-Study development by creating an account on GitHub.github.com Month CollectionView우선, 하나의 달만 표시하는 View부터 만들어보자. 여기서 각 달..
[Data Structure] Tree(1)
2024. 5. 12. 15:32
CS/Data Structure
"트리"(Tree) ADT는 계층 구조를 가지는 그래프의 일종으로 비선형 자료구조이다. 그래프의 일종이기 때문에, 노드와 간선으로 이루어져 있다.이때, 각 노드는 하나의 부모 노드만을 가지며, 여러 개의 자식 노드를 가질 수 있다.이러한 계층 구조에 의해 트리에서는 절대로 순환이 발생하지 않는다. 즉, 트리는 각 노드를 한 번씩만 방문했을 때, 절대 순환이 발생하지 않는 연결 그래프이다. 이렇게 최상위의 노드를 루트노드라 부르며, 모든 트리에는 항상 하나만 존재한다. 또한, 트리 구조는 각 노드를 루트 노드로 하여 하위트리로 분류할 수 있으며, 이러한 특성에 의해 재귀적 자료구조라고도 부른다. 루트 노드(root) : 모든 트리에 하나만 존재하며, 부모가 없는 최상위 노드 리프(단말) 노드(leaf)..
[Data Structure] Graph
2024. 5. 6. 13:39
CS/Data Structure
"그래프"(Graph)는 각 데이터와 그들을 잇는 선들로 이루어진 ADT이다. 각 데이터들을 "정점"(vertex) 혹은 "노드"(node)라 부르며, 이들을 잇는 선을 "간선"(edge)라 부른다. 즉, 그래프는 유한한 개수의 정점과 간선으로 이루어진 ADT이다. 이러한 그래프 G를 G = (V, E)로 정의하는데, V는 정점의 집합, E는 간선들의 집합을 의미한다. 정점(노드) : 각 데이터 간선 : 정점들을 잇는 선 인접 정점: 간선에 의해 연결된 정점 (ex. A의 인접 정점은 B,C)차수(degree) : 정점에 연결된 간선의 개수 (ex. A의 차수는 2)이러한 그래프를 순회하는데 사용하는 알고리즘에는 대표적으로 BFS와 DFS가 있다.순회란, 그래프내의 모든 정점을 한번씩 방문하는 것을 말..
[Data Structure] Hash Table(2) - Implementation
2024. 4. 29. 16:10
CS/Data Structure
Swift에서 HashTable을 활용한 자료구조에는 Set과 Dictionary가 존재한다.이 중 Key-Value 쌍으로 데이터를 저장하는 Dictionary를 구현해 보자. 해당 포스팅에선 Dictionary를 Chaing방법과 Open Addressing 2가지 방법으로 모두 구현해 볼 것이다.여기서는 구현에 관해서만 다룰 것이기 때문에, 해시 테이블 이론에 관련한 것들은 이전 포스팅을 참고 바란다.https://seokyoungg.tistory.com/92 [Data Structure] Hash Table(1) - Concept만약 다음과 같은 데이터가 있다고 가정해 보자. 이들을 저장하기 위해선, 품목을 키값으로 매핑해 개수를 저장해야 한다. 즉, 품목이 인덱스화 될 필요가 있다. 이처럼 k..
[Data Structure] Hash Table(1) - Concept
2024. 4. 20. 17:12
CS/Data Structure
만약 다음과 같은 데이터가 있다고 가정해 보자. 이들을 저장하기 위해선, 품목을 키값으로 매핑해 개수를 저장해야 한다. 즉, 품목이 인덱스화 될 필요가 있다. 이처럼 key-value를 매핑하는 것이 "해시 테이블(Hash Table) ADT"이다. 해시 테이블 ADT를 자료구조로 구현하기 위해선, key 값을 정수값으로 매핑할 필요가 있다. 이러한 Key값을 해시 테이블의 인덱스로 매핑하는 것이 "해시 함수"(Hash Function)이다. 이때, 해시 함수의 결과값을 해시, 해시 값, 해시 코드라 부른다. 즉, 해시 테이블(Hash Table) ADT를 자료구조로 구현하기 위해 필요한 것이 해시 함수이다. 해시 함수의 결과값인 해시(해시 값, 해시 코드)는 해시테이블의 인덱스가 된다. 이렇게 인덱스를..
[Data Structure] Priority Queue
2024. 4. 15. 14:42
CS/Data Structure
"우선순위 큐"(Priority Queue)는 다음과 같은 2개의 Main Operation을 명세하는 ADT이다.enqueue(push): 원소를 추가한다.dequeue(pop): 우선순위가 높은 원소를 제거한다. 지난 포스팅에서 다루었던 "큐"(Queue)는 먼저 들어온 데이터가 먼저 나가는 FIFO의 형태라면, "우선순위 큐"(Priority Queue)는 먼저 들어온 데이터가 아닌, 우선순위가 높은 데이터가 먼저 나가는 ADT이다. 흔히들 "우선순위 큐는 Heap이다"라고 생각하는데, 이는 잘못된 오류이다. 우선순위 큐는 ADT일뿐 위에 말한 2개의 Operation만 제공하면 된다. 즉, 스택이 배열, 연결리스트 등으로 다양한 방법으로 구현할 수 있는 것처럼 우선순위 큐도 다양한 방법으로 구현..
[Data Structure] Queue
2024. 4. 13. 16:06
CS/Data Structure
"큐"(Queue)는 선형 자료구조로 2가지 Main Operation을 기본적으로 제공하는 ADT이다. enqueue(push) : 원소를 추가한다. dequeue(pop) : 가장 처음에 추가된 원소를 제거한다. 지난 포스팅에서 다루었던 스택은 프링글스 통과 같이 LIFO로 동작했다. 반면, 큐는 티켓팅을 위해 줄을 서는 것과 같이 가장 먼저 들어간 원소가 가장 먼저 제거되며, 이를 FIFO라 부른다. 큐 역시 위의 사진과 같이 원소의 삽입과 삭제되는 위치가 정해지기 때문에, Restricted Structure라고도 불린다. 이렇게 원소가 삽입되는 곳을 tail, rear, back이라 부르며, 원소가 삭제되는 곳을 head, front라 부른다. 사용 Computer Science에서 큐는 굉장히..
[Data Structure] Stack
2024. 4. 9. 14:28
CS/Data Structure
"스택"(Stack)은 말 그대로 "무언가를 쌓아 올린 것"을 의미한다.대표적으로 프링글스 통이 있다. 프링글스 통 안에는 과자가 쌓여있고, 최근에 들어간 과자가 가장 먼저 나오는 구조이다. 이러한 구조를 "스택"이다 부른다. "스택"은 선형 자료구조로 다음과 같은 2가지 Main Operation을 제공하는 ADT이다. push : 원소를 추가한다.pop : 가장 최근에 추가된 원소를 제거한다. ADT는 자료와 자료들의 연산에 대한 명세이다. 이를 구현한 것이 자료구조가 되며, 스택과 같이 대부분 ADT와 자료구조는 동일한 이름을 갖는다. 앞선, 프링글스 통을 다시 살펴보자! 프링글스 통은 입구 및 출구가 한개이기에, 가장 최근에 넣은 과자가 먼저 나올 수 있다. 즉, 스택도 다음과 같은 구조이기에..
[PS] BOJ 1019(책 페이지) - C++
2024. 4. 6. 21:05
CS/Algorithm
https://www.acmicpc.net/problem/1019 1019번: 책 페이지 첫째 줄에 0이 총 몇 번 나오는지, 1이 총 몇 번 나오는지, ..., 9가 총 몇 번 나오는지를 공백으로 구분해 출력한다. www.acmicpc.net 10의 자릿수가 변할 때마다, 1의 자리 0~9까지가 반복된다. 또한, 100의 자릿수가 변할 때마다, 0~99의 숫자가 반복된다. 즉, 각 자릿수마다 특정 패턴들이 반복된다. 각 자릿수 별로 등장하는 패턴들을 예시를 통해 살펴보자. N이 32698723이라고 가정하고, $10^6$의 자릿수에서의 숫자들의 등장 횟수를 살펴보자. 경우의 수는 다음과 같이 나누어진다. N의 $10^6$자릿수보다 작은 경우 N의 $10^6$자릿수보다 큰 경우 N의 $10^6$자릿수와 ..
[Data Structure] Array & Linked List(2) - Implementation
2024. 4. 5. 16:28
CS/Data Structure
이번 포스팅에선 List ADT 중 Linked List를 Swift를 통해 구현해 보자. 개념에 관해 보고 싶다면 이전 포스팅을 참고 바란다. 전체적인 구현은 여기에서 확인 할 수 있다. https://github.com/jungseokyoung-cloud/Data-Structure GitHub - jungseokyoung-cloud/Data-Structure: Data Structures implemented with Swift Data Structures implemented with Swift. Contribute to jungseokyoung-cloud/Data-Structure development by creating an account on GitHub. github.com Simple L..
[Data Structure] Array & Linked List(1) - Concept
2024. 3. 30. 16:57
CS/Data Structure
이번 포스팅에선 선형 자료구조의 배열과 연결 리스트에 대해서 알아보자. List(Sequence) ADT List 혹은 Sequence는 추상 자료형(Abstract Data Type)으로 Data의 중복을 허용하는 순서가 있는 Data의 모임이다. 추상 자료형은 기능만을 명세해 놓은 것이다. 이를 구현한 것이 자료구조가 된다. 이러한 List ADT는 다음과 같은 기능을 명세한다. 처음, 끝, 혹은 중간에 데이터를 추가 / 삭제하는 기능 데이터가 있는지를 체크하는 기능 모든 데이터에 접근할 수 있는 기능 이때 데이터를 쌍으로 저장하면 동적배열(Dynamic Array)이 각 데이터들을 포인터를 통해 연결하면 연결리스트가 된다. 배열 (Array) "배열"(Array)은 쌍으로 구성되며 메모리 상에서 연..