# TIL - Data Structure (자료구조)

0

Data Structure?

Data Structure, 자료 구조는

  • 데이터에 편하게 접근하고 조작하기 위한 데이터 조작 및 저장방법
  • 자료구조는 여러 종류가 있으며 각 데이터의 목적에 따라 상황에 맞게 올바른 자료구조를 선택/사용해야함.
  • 언어별로 지원양식이 다름.

자료구조가 중요한 이유

  • 상황과 문맥에 맞게 데이터를 담을 수 있는 적절한 구조로서, 이를 적절히 사용하는 것은 개발 시스템에 미치는 영향이 크다.

자료구조의 분류

  • Primitive Data Structure (단순구조) : 프로그래밍에서 사용되는 기본 데이터 타입.
  • Non- Primitive Data Structure (비단순 구조)
    : 단순한 데이터 저장이 아닌, 여러 데이터를 목적에 맞게 효과적으로 저장하는 자료구조.
    -Linear Data Structure (선형 구조): 저장되는 자료의 전후 관계가 1:1 (ex.list, stacks,Queues)
    - Non-Linear Data Structure (비선형 구조) : 데이터 항목의 관계가 1:n 혹은 n:m (ex. Graphs, Trees)

1. Array (list)

Js 에서는 Array, Python 에서는 list를 주로 사용.

  • 가장 기초적이고 단순하면서 가장 많이 쓰이는 자료구조.

  • 순차적으로 (ordered)데이터를 저장.

  • 자료구조에 저장하는 data는 element(요소)라고 한다.

  • array는 순차적으로 저장할때 사용하고, 순서가 상관이 없을지라도 서료 연결된 데이터들을 저장할 때 주로 사용함.

  • element는 insertion 순서대로 삽입. 가장 마지막에 삽입한 것은 array의 마지막에 저장됨.

  • 이미 생성된 리스트도 수정 가능 (mutable)

  • 동일한 값도 여러번 삽입 가능

  • multi-dimensional Array : Array 내 element로 array가 존재할 수 있음 (ex. [[1,2],[3,4,5],[6,7]])

    Array의 단점:

    1) 데이터의 추가 및 삭제
    순차적으로 데이터를 저장하므로 element를 더하거나 지우면 하나씩 뒤로 밀거나 앞으로 당겨야 함.
    고로 operation이 자꾸 일어나게 됨.
    -> 자주 삭제/추가되는 데이터에는 부적합 한 방식.

    2) Resizing
    처음 생성시 어느정도 memory를 할당 함. (pre-allocation)
    만일 메모리가 다 찼을 시, resizing 필요. (메모리 할당이 다시 필요함.)
    새로 할당되는 메모리도 순차적이어야 하므로 operation이 오래걸림.
    -> 사이즈예측이 잘 안되는 경우엔 부적절.

    Array 사용이 적합한 경우

  • 순차적 데이터 ex.주식가격

  • 다차원 데이터 (multi-dimensional array)

  • 특정 요소를 빨리 불러와야 할 때

  • 테이터 사이즈 변화가 적을 때

  • 요소의 삭제/추가가 잦지 않을때.

    2. Tuple

  • Python 에서만 지원.

  • list 와 비슷한 순열 자료구조

  • 2~3개 정도의 소규모 데이터 저장시에 적합

  • 1개 이상의 값을 return하고싶을 때 적합

    Tuple 장점

  • 간단한 값을 빨리 표현할 때 ex.좌표데이터

  • 소규모 데이터이므로 메모리가 적고 빠름.

    Tuple 단점

  • key : value 형식이 아니므로 데이터가 무슨 의미인지 불명확함.
    -> 데이터의 문맥을 읽고 파악해야함 (직관적이지 않음)

profile
알쏭달쏭 디지털 세상

0개의 댓글