자료 구조 (2) - Array(list), Tuple

JM·2020년 6월 10일
0

data_structure

목록 보기
2/2

Array(list)

  • Array(List)는 가장 기초적이고 단순하면서도 가장 자주 사용 되는 자료 구조

특징

  • Array는 주로 서로 연결된 데이터들을 순차적 으로 저장할때 사용합니다.
  • 순서가 상관 없더라도 사용됩니다.
  • 삽입(insertion) 순서대로 저장됩니다.
  • 이미 생성된 리스트도 수정 가능합니다.
  • 동일한 값도 여러번 삽입 가능합니다.
  • Multi-dimensional Array(다중차원 배열)이 가능합니다.

단점

  1. Removing or Adding Elements
  • 순차적으로 담겨있는 데이터 중 특정 위치에 있는 중간의 요소가 삭제 되는 경우에, 뒤에 있는 모든 요소들을 앞으로 한칸씩 이동시켜주어야 합니다. 배열에서 요소를 삭제하는 것은 다른 자료 구조에 비해 느릴 수 있다는 뜻입니다.
  • 따라서 Array 는 정보가 자주 삭제 되거나 추가되는 데이터를 담기에는 적절치 않습니다.
  1. Array Resizing
  • 배열은 메모리가 순차적으로 채워지기 때문에 배열이 처음 생성될 때 어느 정도 메모리를 미리 할당합니다. 하지만 요소들이 처음 할당한 메모리 이상으로 많아진다면 resizing이 필요합니다. 즉, 메모리를 더 할당해야 합니다
  • 사이즈가 급격하게 자주 늘어날 확률이 있는 데이터는 array 말고 더 적합한 자료구조를 선택해야 한다는 것을 알 수 있습니다.

언제 사용하면 좋을까요?

  • 순차열적인 데이터를 저장할 때
    • ex) 주식 가격. 어제의 2만원과 오늘의 2만원이 다름 >>> 값보다는 순서가 중요한 데이터
  • 다차원 데이터를 다룰 때 >>> Multi-dimensional Array
  • 어떠한 특정 요소를 빠르게 읽어야 할 때 >> index를 통해 곧바로 읽을 수 있기 때문
  • 데이터의 사이즈가 급변하게 자주 변하지 않을 때
  • 요소가 자주 삭제 되거나 추가되지 않을 때

Tuple

Tuple 이란?

  • List와 마찬가지로 데이터를 순차적으로 저장할 수 있는 순열 자료구조입니다.
  • 하지만 list와 다르게 한 번 정의되고 나면 수정할 수 없습니다.(immutable)

Tuple의 장점

  • Tuple은 간단한 값을 빨리 표현하고 싶을 때 많이 사용합니다.

Tuple의 단점

  • Tuple의 단점은 데이터가 무슨 의미인지 명확하지 않다는 것입니다. 데이터의 의미를 문맥을 보고 가정해야 합니다.
  • 그렇기 때문에 Tuple은 소규모 데이터를 다루기에 적합합니다.

언제 사용하면 좋을까요?

  • Array(List)를 쓰기에는 간단한 데이터들을 표현할 때 사용합니다.
  • Tuple이 Array(List) 보다 더 가볍고 메모리더 적게 먹습니다.
  • 2-3개 정도의 적은 수의 소규모 데이터를 저장할 때 많이 사용합니다.
  • 함수에서 리턴 값을 한 개 이상 리턴하고 싶을 때 자주 쓰입니다.

0개의 댓글