728x90
알고리즘을 풀다 보니 스택, 큐, 트리와 같은 형태를 자주 만나게 되는데 과연 자료구조란 무엇이며, 왜 사용하고, 어떤 점이 좋은 가에 대해 궁금해지기 시작해서 자료를 찾아보고 정리하기로 하였다.
1. 의미
- Data Structure
- 즉, Data의 집합
- 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것
쉽게 표현하자면
- 처리하고자 하는 데이터들이 모여있는 형태
- 처리하고자 하는 데이터들 사이의 관계(수직, 상하, 일방, 상호 등)를 정의한 것
- 데이터들을 사용하기 용이하게 저장해 놓은 형태
2. 목적 및 선택 기준
- 효율적으로 저장, 관리
- 잘 선택된 자료구조는 실행시간 단축, 메모리 절약의 효과를 이끌어 낸다.
자료구조를 잘 선택한다는 것은 일상에서 보자면 도서관의 책들을 잘 정렬해놓으면 우리가 쉽게 열람할 수 있는 것과 같이 규칙과 틀을 만드는 것과 같다.
선택 기준
- 자료의 처리 시간
- 자료의 크기
- 자료의 활용 빈도
- 자료의 갱신 정도
- 프로그램의 용이성
3. 특징
- 효율성
- 자료구조의 주 목적인 효율적인 데이터의 관리 및 사용
- 검색 알고리즘을 구현할 때,
- 양이 많다면, 순차 검색 보다는 이분 검색을 활용하는 것과 같이 목적에 맞는 자료구조를 사용
- 추상화
- 복잡한 자료, 모듈, 시스템 등으로 부터 핵심적인 개념만 간추려 내는 것
- 자료구조 구현 시 중요한 것은 어느 시점에 데이터를 삽입, 어떻게 사용에 대한 초점
- 알고리즘 자체가 아닌 구현 외적인 부분이 중요
- 스택을 예로 들자면, push와 pop함수 이용하여 데이터를 추출하는데,
내부 구현이 어떻게 되었는지는 중요하지 않음.
- 재사용성
- 자료구조를 설계 시 특정 프로그램에서만 동작하게 설계 x
- 다양한 프로그램에서 동작할 수 있도록 범용성 있게 설계하기 때문에 다른 프로젝트에서도 사용 가능
4. 분류
각각의 자료구조에 대해 공부한 후 효율적인 데이터 관리를 해보자!!
728x90
'CS > 자료구조' 카테고리의 다른 글
[자료구조] 큐(Queue) - 선형 큐, 원형 큐, 우선순위 큐 with Python (0) | 2022.09.09 |
---|---|
[자료구조] Stack with Python (0) | 2022.09.09 |
[자료구조]- 문자열 (자료형) (1) | 2022.09.09 |
[자료구조] 2차원 배열 with Python (0) | 2022.09.09 |
[자료구조] 배열과 리스트 with Python (0) | 2022.09.09 |