[Python] 자료구조

BBaeng·2021년 5월 12일
0

Python

목록 보기
1/1

자료구조란?

우리는 일상에서 많은 물건이나 자료를 사용한다. 예를 들어 책상, 옷장 등의 물건들을 정리하거나, 스마트폰에서 사진들을 분류하고 컴퓨터에서 사용하는 파일들을 정리한다. 왜 이렇게 정리할까? 편리하게, 효율적으로 사용하기 위해서이다. 그렇기에 해야 할 일들을 수첩에 순서대로 기록하고, 영어사전에 단어들을 알파벳순으로 정렬하고, 지도에는 도시들의 연결 상태가 알아보기 쉽게 정리되어있다.

이렇듯 사람들이 사물을 편리하게, 효율적으로 사용하기 위해 정리하는 것과 마찬가지로 컴퓨터에서도 자료들을 정리하고 조직화하는 여러 가지 구조들이 있다. 이를 우리는 자료구조(Data Structure)라고한다.

데이터의 효율적인 접근 및 조작 가능하게 해주는 컴퓨터상의 저장 및 관리방식

목적

우리가 컴퓨터를 사용하는데에는 메모리의 한계가 존재한다.
그리고 프로그램을 만들 때 각 상황에 맞는 구조가 존재하기에 적재적소에 가장 효율적인 자료를 구조화하여 데이터를 효율적으로 사용하기 위함이 가장 큰 이유이다.

자료를 구조화해서 데이터를 효율적으로 사용하여 시간, 메모리 용량의 절감이 큰 목적이다.

특징

  • 효율성
    목적부분에서 말하였듯이 자료구조를 사용하는 목적은 효율적인 데이터의 관리 및 사용이다. 따라서 적절한 자료구조를 선택하여 사용한다면 업무의 효율이 올라갈 것이다.
  • 추상화
    추상화란 복잡한 자료, 모듈, 시스템 등으로 부터 핵심적인 개념만 간추려 내는 것이다. 마찬가지로 자료구조 또한 데이터가 어떻게 구현되었는지 보다는 어떻게 사용되어야하는지가 중요하다. 사람마다 다른 코드를 작성할 것이고, 사용 언어, 개발 툴등 환경적인 변수에 의해서 다른 코드가 나올 것이기 때문에 추상적인 개념에 대해서만 이해하고 있다면 사용할 수 있다.

  • 재사용성
    자료구조를 설계할때 특정 프로그램에서만 동작하게 설계하지는 않는다. 다양한 프로그램에서 동작할 수 있도록 범용성 있게 설계하기 때문에 해당 프로젝트가 아닌 다른 프로젝트에서도 사용할 수 있다.

분류

자료구조는 숫자나 문자와 같은 단순자료구조와 여러자료들을 한꺼번에 보관하는 컨테이너와 같은 복합 자료구조로 나눌 수 있다.

우리는 주로 복합자료구조를 다룰 것 이다.

복합 자료구조는 두 가지로 나뉘어진다.

선형구조

항목, 데이터를 순차적으로 나열

  • 배열(Array)
  • 연결리스트(Linked List)
  • 스택(Stack)
  • 큐(Queue)

비선형구조

저장되는 항목들이 순차적이진 않으나 복잡한 연결관계를 가짐

  • 트리(Tree)
  • 그래프(Graph)

0개의 댓글