자료구조와 알고리즘은 컴퓨터 과학에서 가장 기초적이고 중요한 개념 중 하나이다. 자료구조와 알고리즘은 메모리를 효율적으로 사용하면서 데이터를 빠르고 안정적으로 처리하는 것을 목표로 한다.
자료구조
자료구조(Data Structure)는 컴퓨터가 데이터를 효율적으로 조작할 수 있도록 돕는 데이터 저장 및 연산의 총체를 의미한다. 다시 말해, 자료구조는 데이터를 구성하고 저장하는 방법을 다룬다. 데이터를 보다 쉽게 추가, 검색, 수정, 삭제할 수 있는 구조를 제공하고자 한다. 다음의 자료구조 형태를 이용하여 프로그래밍을 할 때 데이터를 보다 효율적으로 다룰 수 있다.
- 배열(Array): 인덱스로 값을 저장하고 접근하는 가장 기본적인 자료구조로, 일련의 항목을 순서대로 저장한다.
- 연결 리스트(Linked List): 각 항목이 다음 항목을 가리키는 포인터를 가지는 자료구조 이다. 노드를 연결하여 데이터를 저장하며, 삽입과 삭제가 빠르다는 장점이 있다. 각 항목은 메모리의 임의 위치에 저장된다.
- 스택(Stack): 데이터를 쌓아 올리는 구조로, 마지막에 추가된 항목이 가장 먼저 제거되는 후입선출 LIFO(Last-In, First-Out) 자료구조이다.
- 큐(Queue): 데이터를 줄세우듯이 순서대로 저장하는 구조로, 처음에 추가된 항목이 가장 먼저 제거되는 선입선출 FIFO(First-In, First-Out) 방식으로 데이터를 처리한다.
- 해시 테이블(Hash Table): 키-값 쌍으로 데이터를 저장하는 구조로, 각 키를 해시 함수에 적용하여 고유한 인덱스로 값을 맵핑, 찾는다.
- 트리(Tree): 노드와 링크로 구성된 계층 구조를 가지는 자료구조이다. 이진 트리(Binary Tree)는 자주 사용된다.
- 그래프(Graph): 노드와 엣지로 이루어진 자료구조이다. 각 노드는 다른 노드와 연결된 엣지를 가질 수 있다.
알고리즘
알고리즘은 컴퓨터가 수행할 작업을 해결하기 위한 절차 혹은 방법을 의미한다. 다시 말해 입력값에 따라 출력값을 만들어내는 일련의 규칙들을 뜻한다. 더 간단히 말하면 어떤 문제를 풀기 위한 단계절 절차이다. 이 절차들은 문제 해결을 위해서 보다 명확하고 이해하기 쉬운 단계로 구성될 필요가 있다.
- 정렬 알고리즘(Sorting Algorithm): 데이터를 정렬하는 알고리즘으로, 대표적으로 버블 정렬(Bubble Sort), 퀵 정렬(Quick Sort), 병합 정렬(Merge Sort) 등이 있다.
- 검색 알고리즘(Search Algorithm): 데이터에서 원하는 값을 찾는 알고리즘으로, 대표적으로 선형 검색(Linear Search), 이진 검색(Binary Search) 등이 있다.
- 그리디 알고리즘(Greedy Algorithm): 각 단계에서 최선의 선택을 하는 알고리즘으로, 대표적으로 다익스트라 알고리즘이 있다.
- 동적 계획법(Dynamic Programming): 문제를 작은 부분 문제로 나누어 푸는 알고리즘으로, 대표적으로 피보나치 수열(Fibonacci Sequence) 문제가 있다.
- 백트래킹(Backtracking): 모든 가능한 경우의 수를 탐색하면서 해를 찾는 알고리즘으로, 대표적으로 N-Queens 문제가 있다.
이 외에도 다양한 자료구조와 알고리즘이 있으며, 문제의 종류에 따라 적합한 자료구조와 알고리즘을 선택해야 한다.
https://m.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8073601837
'CS, OS, Network' 카테고리의 다른 글
멀티스레딩 (Multithreading)과 멀티프로세싱 (Multiprocessing)의 차이점 (0) | 2023.04.24 |
---|---|
보안(Security)과 관련된 문제들은 무엇이 있을까? (0) | 2023.04.19 |
REST API, RESTful API에 대해서 (0) | 2023.04.17 |
[자바스크립트] HTTP와 HTTPS, 둘의 차이점 (0) | 2023.04.17 |
[운영체제] 프로세스와 스레드란? 그리고 차이점 (0) | 2023.04.14 |
댓글