[Algorithm] Data Structure

자료구조

자료구조(data structure)는 컴퓨터 과학에서 자료(data)에 효율적으로 접근하고 수정할 수 있도록 자료를 조직하고, 관리하고, 저장하는 것을 의미한다. 더 정확히 말해, 자료구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다.

정리하자면, 자료구조
1) 데이터 간에 어떤 관계가 있으며,
2) 여러 데이터들의 묶음을 어떻게 저장할 것이고,
3) 데이터에 적용할 수 있는 함수나 명령은 무엇인지(어떻게 데이터를 사용할 것인지)
정의한 것이다.

자료구조는 왜 사용하나?

자료를 더 효율적으로 저장하고, 관리하기 위해 사용하며, 잘 선택된 자료구조는 실행시간을 단축시켜주거나 메모리 용량의 절약을 이끌어 낼 수 있다.

자료구조의 선택 기준

자료의 처리를 보다 효율적으로 하기 위해서 아래와 같은 사항을 고려하여 선택/사용해야 한다.

  • 자료의 특성
  • 자료의 크기
  • 자료의 주요 사용법
  • 자료의 처리 시간
  • 자료의 활용 빈도
  • 자료의 갱신 정도
  • 자료가 수행해야하는 연산의 종류
  • 프로그램 구현에 필요한 기억공간 크기
  • 프로그램의 용이성

자료구조의 종류

단순구조(Simple Structure)

정수, 실수, 문자 및 문자열과 같이 컴퓨터가 기본적으로 제공하는 자료형.
기본 자료형을 모아서 사용자가 배열, 구조체, 클래스를 선언해서 사용하기도 하는데 이를 사용자 정의 자료형이라 한다.

  • 배열 : 동일한 자료형의 모음
  • 구조체 : 동일하거나 다른 자료형을 여러개 모음
  • 클래스 : 구조체에 메소드까지 포함

구조체(structure)는 '타입이 다른 데이터를 하나로 묶는 방법'이다.
C같은 다른 언어에서는 배열로 타입이 같은 데이터만 묶을 수 있기 때문에 타입이 다른 데이터들을 하나로 묶기 위해 구조체라는 것을 사용한다.
결론부터 말하자면, 자바스크립트에는 구조체라는 개념이 없다. 대신 자바스크립트에서는 배열로 타입이 다른 데이터들을 묶을 수 있다.

// JavaScript에서는 이런 것이 가능하다.
const various = [7, 'string', function(){console.log('this is function')}, [], {}, false];
const typeOfElem = various.map(elem => typeof elem);
console.log(typeOfElem); // ["number", "string", "function", "object", "object", "boolean"]

선형구조(Linear Structure)

자료 간 관계가 1 대 1로 연결된 구조. 데이터들이 일렬로 쭉 저장되어 있는 형태
Stack과 Queue가 선형구조에 해당한다.

비선형구조(Non-Linear Structure)

데이터가 (일렬이 아닌) 트리 형태로 저장되어 있다고 생각하고 사용하는 자료구조.
Graph와 Tree가 비선형구조에 해당한다.

파일구조(File Structure)

다양한 자료구조의 데이터를 파일에 저장하는 방식


Reference

좋은 웹페이지 즐겨찾기