본문 바로가기

DEVELOPMENT/Algorithm

자료구조 개요

반응형

자료구조란?

자료구조(Data Structure)는 데이터를 저장, 관리, 접근하는 방식을 의미한다.
단순히 데이터를 모아놓는 것이 아니라, 효율적으로 데이터를 사용할 수 있도록 구조화하는 것이 핵심이다.

즉, 프로그램이 데이터를 빠르고 효율적으로 처리하도록 설계한 논리적·물리적 구조라고 이해하면 된다.


자료구조의 필요성

  1. 효율적인 데이터 관리
    • 단순 배열처럼 무작정 데이터를 저장하면 검색, 삽입, 삭제에 시간이 많이 걸린다.
    • 자료구조를 사용하면 필요한 작업을 최소한의 시간으로 수행할 수 있다.
  2. 알고리즘과의 연계
    • 자료구조는 알고리즘과 함께 작동한다.
    • 예: 정렬, 탐색, 최단 경로 계산 등 대부분 알고리즘이 자료구조에 의존한다.
  3. 데이터의 의미 표현
    • 데이터 간의 관계, 순서, 계층 구조 등을 표현할 수 있다.
    • 예: 트리, 그래프 등

자료구조의 분류

자료구조는 크게 두 가지 기준으로 나눌 수 있다.

선형 자료구조 (Linear Data Structure)

  • 데이터가 순차적으로 나열되어 있는 구조
  • 각 요소가 1:1로 연결되어 있어 앞뒤 관계가 명확하다

대표적인 선형 자료구조:

자료구조 특징
배열(Array) 고정된 크기, 인덱스를 통한 직접 접근 가능
연결 리스트(Linked List) 동적 크기, 삽입/삭제가 빠름
스택(Stack) LIFO(Last In First Out), 후입선출 구조
큐(Queue) FIFO(First In First Out), 선입선출 구조

비선형 자료구조 (Non-Linear Data Structure)

  • 데이터 간 1:다 혹은 다:다 관계 존재
  • 순차적 구조가 아니며, 계층적 또는 그래프 형태

대표적인 비선형 자료구조:

자료구조 특징
트리(Tree) 계층 구조, 부모-자식 관계, 탐색/정렬에 유리
그래프(Graph) 노드와 간선으로 표현, 복잡한 관계 표현 가능

자료구조 설계 시 고려사항

  1. 시간 복잡도
    • 검색, 삽입, 삭제, 정렬 등의 연산 속도 중요
  2. 공간 복잡도
    • 메모리 사용량 고려
  3. 데이터의 특성
    • 삽입/삭제가 빈번한가, 검색이 자주 필요한가 등
  4. 응용 목적
    • 프로그램 요구사항에 맞는 자료구조 선택이 핵심

결론

자료구조는 단순히 데이터를 저장하는 것이 아니라, 효율적인 처리와 관리, 데이터 관계 표현을 위해 존재한다.
선형 자료구조는 순차적 데이터를, 비선형 자료구조는 계층적/복잡한 관계 데이터를 처리할 때 유리하다.

즉, 알고리즘을 효율적으로 구현하고, 프로그램 성능을 높이는 핵심 기반이 바로 자료구조다.

반응형

'DEVELOPMENT > Algorithm' 카테고리의 다른 글

그래프(Graph)  (0) 2019.02.07
정렬(Sorting)의 비교  (0) 2019.02.07
큐(Queue)  (0) 2019.02.07
스택(Stack)  (0) 2019.02.07
연결리스트(Linked List)  (0) 2019.02.07