1. 자료 구조(Data Structure)
데이터를 효율적으로 관리하고 조작하는 데 필수적인 컴퓨터 과학의 핵심 개념이다.
1-1. 자료 구조의 중요성과 기능
- 목적 : 효과적인 데이터 저장, 관리 및 접근을 가능하게 한다.
- 기능 : 데이터 삽입, 수정, 삭제, 검색 등 다양한 연산을 수행한다.
1-2. 자료 구조의 주요 연산
- 삽입(Insertion) : 새로운 데이터를 구조에 추가
- 수정(Modificaion) : 기존 데이터의 갱신 또는 변경
- 삭제(Deletion) : 특정 데이터 제거
- 검색(Search) : 특정 데이터의 위치 또는 존재 여부 확인
- 정렬(Sorting) : 데이터를 특정 기준에 따라 재배열
- 병합(Merging) : 두 개 이상의 데이터 집합을 하나로 합침
- 순회(Traversal) : 구조 내의 모든 데이터를 방문하거나 접근
1-3. 추상 자료형(Abstract Data Types, ADT)
- 정의 : 데이터 타입과 해당 타입에서 수행할 수 있는 연산을 정의하지만, 이를 어떻게 구현할지는 명시하지 않는다.
- 예시 : 스택, 큐, 리스트 등
1-4. 자료 구조의 분류
1-4-1. 선형 자료 구조(Linear Data Structures)
- 데이터가 순차적으로 배열되는 구조
* 배열(Array) : 고정된 크기의 연속적인 메모리 할당
* 연결 리스트(Linked List) : 각 요소가 다음 요소를 가리키는 포인터로 연결된 구조
* 스택(Stack) : LIFO(Last In First Out) 원칙에 따라 동작한다. (후입선출)
* 큐(Queue) : FIFO(First In First Out) 원칙에 따라 동작한다. (선입선출)
1-4-2. 비선형 자료 구조(Non-linear Data Structures)
- 데이터가 계층적이거나 그래프 형태로 저장되는 구조
* 트리(Tree) : 계층적 구조를 가지며, 부모-자식 관계를 가진 노드로 구성
* 그래프(Graph) : 노드와 이 노드들을 연결하는 에지로 구성
2. 알고리즘(Algorithms)
복잡한 문제를 해결하기 위한 단계별 절차로, 효율적이고 체계적인 방식으로 문제를 해결하는 데 사용된다.
2-1. 알고리즘의 정의와 특성
- 정의 : 규정된 시간 내에 특정 작업을 완료하기 위한 명확하고 순차적인 절차
- 특성
* 결정성(Definiteness) : 각 단계는 명확하고 정확해야 한다.
* 유한성(Finiteness) : 유한한 단계 후에는 반드시 종료되어야 한다.
* 입력(Input) : 하나 이상의 입력을 받아 처리.
* 출력(Output) : 하나 이상의 출력을 제공
* 효과적(Effectiveness) : 모든 단계는 충분히 기본적이어서 정확하게 실행 가능해야 한다.
2-2. 알고리즘의 중요성
- 효율성 : 더 빠르고 경제적인 방식으로 문제 해결이 가능하다.
- 자동화 : 복잡한 작업을 자동화하고 오류를 최소화한다.
2-3. 알고리즘의 예시
- 정렬(Sorting) : 데이터를 특정 순서로 배열(버블 정렬, 퀵 정렬)
- 검색(Searching) : 데이터 집합에서 특정 요소 찾기(이진 검색)
- 그래프 알고리즘 : 그래프 구조에서 최단 경로, 최소 신장 트리 등 찾기(다익스트라 알고리즘)
'웹 서비스 개발(FB,BE,SERVER,DB) > Algorithm' 카테고리의 다른 글
6. 해시 테이블(Hash Table) (0) | 2024.01.15 |
---|---|
5. 큐(Queue) (0) | 2024.01.15 |
4. 스택(stack) (0) | 2024.01.15 |
3. 연결 리스트(Linked List) (0) | 2024.01.15 |
2. 배열(Array)과 리스트(List) (0) | 2024.01.14 |
댓글