Computer Science
-
[ 비선형 자료구조] 그래프Computer Science/자료 구조 2023. 1. 11. 07:15
그래프 1) 개념 그래프는 정점(vertex)와 간선(edge)으로 이루어진 대상 간의 관계를 표현하는 자료구조이다. 2) 용어 정리 정점(vertex) / 노드 : 데이터가 저장되는 공간 간선(edge) / link / branch : 정점을 연결하는 선 인접 정점(adjacent vertex) : 직접 연결된 정점 단순 경로(simple path) : 방복되는 정점/간선 없이 이루어진 경로 차수(degree) : 무방향 그래프에서 하나의 정점에 연결된 정점의 수 진출 차수(out-degree) : 방향 그래프에서 정점을 기준으로 나가는 간선의 수 진입 차수(in-degree) : 방향 그래프에서 정점을 기준으로 들어오는 간선의 수 경로 길이(path length) : 경로를 구성하는 간선의 수 cyc..
-
[ 선형 자료구조 ] 스택(Stack) & 큐(Queue)Computer Science/자료 구조 2023. 1. 9. 13:55
1. Stack 1) 개념 스택은 LIFO(last-in-first-out), 즉, 후입선출 원칙을 따르는 선형 자료구조이다. 따라서 데이터의 출입은 한 방향에서만 이루어지고, 이름에 걸맞게 쌓아가는 구조를 가진다. 데이터에 대한 접근은 가장 위층에 대해서 가능하며, 삽입(push) / 삭제(pop) 연산 또한 가장 위층의 데이터에 대해서 가능하다. 스택에서 사용되는 주요 연산은 앞서 소개한 push, pop과 더불어 가장 위층의 데이터를 삭제하지 않고 반환하는 peek, 스택이 비었는지 여부를 반환하는 isEmpty 등이 있다. 2) 장점 구조 자체가 간단하고 직관적이며, 구현이 쉽다. 가장 마지막 데이터에대한 접근만 가능하므로 데이터에 대한 접근이 매우 빠르다. 3) 단점 최대 할당 크기가 제한된다...
-
[ 선형 자료구조 ] VectorComputer Science/자료 구조 2023. 1. 9. 11:50
1. Vector 1) 개념 컴퓨터 과학에서 벡터는 배열과 유사하되 동적으로 크기를 조정할 수 있는 자료구조이며, 배열처럼 연속된 메모리 를 바탕으로 구성된다. 백터는 데이터를 연속되게 쌓으며 삭제/삽입 등의 연산시 대상 인덱스 이후의 요소들의 위치를 조정한다. 2) 장점 쉽게 크기 조정이 가능하다. idx를 통해 빠르게 각 요소에 접근가능하며 O(n)의 시간 복잡도를 갖는다. 끝 요소의 경우 삽입/삭제 연산이 빠르다. O(n)의 시간복잡도를 갖는다. 요소 저장을 위한 메모리만 사용하기 때문에 배열보다 메모리 측면에서 효율적이다. 3) 단점 요소들의 위치 조정이 필요하기 때문에 끝 이외의 부분에서의 삽입/삽제 연산은 배열보다 느리다. 각 요소의 크기, 저장된 요소의 개수 등의 정보를 포함하기 때문에 배열..
-
[ 선형 자료구조 ] 배열 & 리스트Computer Science/자료 구조 2023. 1. 6. 16:01
1. 배열 1) 개념 배열은 연관된 데이터를 그룹핑해 관리하는 방식의 자료구조이다. 연속적인 메모리 블록에 데이터를 저장하며, 각 항목을 요소(element)라 한다. 배열은 생성될 때 크기가 고정되며, 해당 위치를 결정하는 인덱스를 가진다. 2) 배열의 특징 (1) 장점 각 항목이 고정적인 인덱스를 가지며, 이를 통해서 각 항목의 요소로의 접근이 O(1)의 빠른 시간복잡도를 가진다. 따라서 잦은 접근이 필요한 데이터를 저장하기에 알맞다. 배열의 경우 데이터의 크기가 고정적이고 잦은 접근이 필요한 경우, 혹은 인덱스가 중요한 경우 이점을 가진다. (1) 단점 생성과 함께 사이즈가 고정되기 때문에 요소의 추가/삭제가 자유롭지 못하다. 항목의 데이터를 삭제해도 인덱스 값은 고정되며 메모리상에서 지속적으로 자..
-
[ 선형 자료구조 ] 연결 리스트 - Circular Linked List(원형 연결 리스트)Computer Science/자료 구조 2023. 1. 4. 17:27
연결 리스트는 각각의 요소들이 "노드"에 저장되는 선형 자료 구조이다. 각 노드들은 다음 노드에 대한 참조값을 가지며 이를 "링크"라 한다. 이러한 노드들로 이루어진 연결 리스트는 노드의 link filed를 사용함으로써 데이터의 추가 및 삭제를 모든 리스트 인덱스에 대한 방문 및 재구성 없이 실행 가능하다. 연결 리스트는 스택, 큐, 그래프 등을 구현하는데 자주 사용되며, 그 종류로는 Singly linked list, Doubly linked list 등이 있다. 1. 기본 배경 지식 1) Node 연결 리스트를 구성하는 노드는 Data filed, Linke filed 두 가지 필드로 이루어진 묶음이다. Data filed는 node는 integer, character 등 노드가 보유할 실제 데이터..
-
[ 선형 자료구조 ] 연결 리스트 - Doubly Linked List(이중 연결 리스트)Computer Science/자료 구조 2023. 1. 3. 16:47
연결 리스트는 각각의 요소들이 "노드"에 저장되는 선형 자료 구조이다. 각 노드들은 다음 노드에 대한 참조값을 가지며 이를 "링크"라 한다. 이러한 노드들로 이루어진 연결 리스트는 노드의 link filed를 사용함으로써 데이터의 추가 및 삭제를 모든 리스트 인덱스에 대한 방문 및 재구성 없이 실행 가능하다. 연결 리스트는 스택, 큐, 그래프 등을 구현하는데 자주 사용되며, 그 종류로는 Singly linked list, Doubly linked list 등이 있다. 1. 기본 배경 지식 1) Node 연결 리스트를 구성하는 노드는 Data filed, Linke filed 두 가지 필드로 이루어진 묶음이다. Data filed는 node는 integer, character 등 노드가 보유할 실제 데이터..
-
[ 선형 자료구조 ] 연결 리스트 - Singly linked list(단순 연결 리스트)Computer Science/자료 구조 2022. 12. 28. 19:17
연결 리스트는 각각의 요소들이 "노드"에 저장되는 선형 자료 구조이다. 각 노드들은 다음 노드에 대한 참조값을 가지며 이를 "링크"라 한다. 이러한 노드들로 이루어진 연결 리스트는 노드의 link filed를 사용함으로써 데이터의 추가 및 삭제를 모든 리스트 인덱스에 대한 방문 및 재구성 없이 실행 가능하다. 연결 리스트는 스택, 큐, 그래프 등을 구현하는데 자주 사용되며, 그 종류로는 Singly linked list, Doubly linked list 등이 있다. 1. 기본 배경 지식 1) Node 연결 리스트를 구성하는 노드는 Data filed, Linke filed 두 가지 필드로 이루어진 묶음이다. Data filed는 node는 integer, character 등 노드가 보유할 실제 데이터..
-
[ 복잡도 ] 정렬 알고리즘의 복잡도Computer Science/자료 구조 2022. 12. 26. 21:43
정렬 알고리즘에 따른 복잡도 Algorithms space complexity time complexity 최악 최선 평균 최악 bubble O(1) O(n) O(n^2) O(n^2) heap O(1) O(n log n) O(n log n) O(log n) insertion O(1) O(n n) O(n^2) O(n^2) merge O(n) O(n log n) O(n log n) O(log n) quick O(log n) O(n log n) O(n log n) O(n^2) selection O(1) O(n^2) O(n^2) O(n^2) shell O(1) O(n) O(n^1.25) O(n^1.25) smooth O(1) O(n) O(n log n) O(n log n) 자료 구조 별 시간 복잡도 Big-O ..