728x90

알고리즘을 풀다 보니 스택, 큐, 트리와 같은 형태를 자주 만나게 되는데 과연 자료구조란 무엇이며, 왜 사용하고, 어떤 점이 좋은 가에 대해 궁금해지기 시작해서 자료를 찾아보고 정리하기로 하였다.

 

1. 의미

  • Data Structure
  • 즉, Data의 집합
  • 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것

쉽게 표현하자면 

  • 처리하고자 하는 데이터들이 모여있는 형태
  • 처리하고자 하는 데이터들 사이의 관계(수직, 상하, 일방, 상호 등)를 정의한 것
  • 데이터들을 사용하기 용이하게 저장해 놓은 형태

 

2. 목적 및 선택 기준

  • 효율적으로 저장, 관리
  • 잘 선택된 자료구조는 실행시간 단축, 메모리 절약의 효과를 이끌어 낸다.

자료구조를 잘 선택한다는 것은 일상에서 보자면 도서관의 책들을 잘 정렬해놓으면 우리가 쉽게 열람할 수 있는 것과 같이 규칙과 틀을 만드는 것과 같다.

 

선택 기준
  • 자료의 처리 시간
  • 자료의 크기
  • 자료의 활용 빈도
  • 자료의 갱신 정도
  • 프로그램의 용이성

 

3. 특징

  1. 효율성
    • 자료구조의 주 목적인 효율적인 데이터의 관리 및 사용
    • 검색 알고리즘을 구현할 때, 
    • 양이 많다면, 순차 검색 보다는 이분 검색을 활용하는 것과 같이 목적에 맞는 자료구조를 사용
  2. 추상화
    • 복잡한 자료, 모듈, 시스템 등으로 부터 핵심적인 개념만 간추려 내는 것
    • 자료구조 구현 시 중요한 것은 어느 시점에 데이터를 삽입, 어떻게 사용에 대한 초점
    • 알고리즘 자체가 아닌 구현 외적인 부분이 중요
    • 스택을 예로 들자면, push와 pop함수 이용하여 데이터를 추출하는데, 내부 구현이 어떻게 되었는지는 중요하지 않음.
  3. 재사용성
    • 자료구조를 설계 시 특정 프로그램에서만 동작하게 설계 x
    • 다양한 프로그램에서 동작할 수 있도록 범용성 있게 설계하기 때문에 다른 프로젝트에서도 사용 가능

 

4. 분류

각각의 자료구조에 대해 공부한 후 효율적인 데이터 관리를 해보자!!

728x90