자료구조

정의

자료구조(Data Structure)란?

프로그래밍에서 데이터를 구조적으로 표현하는 방식과 이를 구현하는 데 필요한 알고리즘에 대해 논하는 기초이론.

→ 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다.

목적

  1. 컴퓨터의 메모리는 1차원 구조이기 때문에 현실 세계의 다차원 데이터를 다루기 위해서는 이것을 1차원인 선 형태로 바꾸는 것이 필요하다. 쉽게 말해 현실을 프로그래밍적으로 표현하기 위함이다.

    1) set(집합)

    동아리(농구, 축구, 배구)들이 있는데 각각 집합이고 교집합과 합집합을 찾기 위해 set을 사용

    2) graph

    위치 별로 최단 거리를 알아낼 수 있고 프로그래밍적으로 표현할 수 있는 방법을 graph로 사용

  2. 메모리의 효율적인 사용. 집에 책이 한 권만 있다면 찾기 편하지만, 여러 권이 있다면 찾기 어려울 것이다.

    컴퓨터의 중요한 3가지 부품

    1) CPU : 중앙처리장치

    2) MEMORY(RAM : RamdomAccessMemory) : 가격 비쌈. 속도 빠름. 용량 작음. 전원을 끄면 데이터가 사라짐.

    3) STORAGE(HDD/SSD) : 가격 저렴. 속도 느림. 용량 큼. 전원을 꺼도 데이터가 남아있음.


    STORAGE는 느리기 때문에 CPU는 MEMORY와 일을 한다.

    (STORAGE의 데이터 → MEMORY의 데이터 → CPU의 데이터)

    고로 실행속도를 결정짓는 것은 MEMORY

자료구조의 과제는 메모리의 효율적인 사용이고, 이를 위해 우리는 자료구조를 알아야 한다.

분류

자료구조에는 여러 종류가 있으며, 각각의 자료구조는 각자의 연산 및 목적에 맞추어져 있다. 다양한 프로그램을 설계할 때, 어떠한 자료구조를 선택할지는 가장 우선적으로 고려되어야 한다.

  1. 자료구조의 이용에 따른 분류

    목적 분류
    자료를 어떻게 기억장치에 저장할 것인가? 파일편성 : 데이터를 기억장치에 저장할 때 파일 구조
    어떤 순서로 정리할 것인가? 정렬 : 기억장치 내의 데이터를 일정 순서로 나열
    기록된 자료에서 원하는 것을 어떻게 찾아낼 것인가? 검색 : 기억장치에서 원하는 데이터를 찾는다.
    기록된 자료에 색인을 이용한 검색 방법을 구현할 수 있는가? 인덱스 : 파일에서 특정 데이터를 빠르게 찾기 위한 색인
  2. 자료구조의 분류

또 하나의 이유

트레이드 오프(Trade Off)

경제 용어로 쓰이지만, 컴퓨터에서도 비슷한 맥락으로 사용된다. 어떤 특성이 좋아지면 다른 특성이 나빠지는 상황을 의미.

예시로, 우리가 자료구조로 ArrayList와 LinkedList 중에서 고민한다고 생각해보자. 두 개의 장단점은 확연히 다르다!

자료구조를 배우는 이유 중 하나로는 트레이드 오프를 이해하기 위해서이다. 장단점의 미묘한 균형을 이해할 수 있어야 올바른 선택을 할 수 있기 때문이다. 장점을 활용해 좋은 자료구조를 만들 수 있다. 단, 이 또한 다른 단점을 피해갈 순 없다.

참고문헌

자료구조 / DOCPLAYER

Data Structure(자료구조) / 생활코딩

Leave a comment