자료구조 개요 .. 🐕

sosimeow·2023년 8월 15일
0

Python Data structure

목록 보기
3/3

✅ 자료구조를 알아야 하는 이유

  • 데이터를 체계적으로 저장하고, 효율적으로 활용하기 위해 자료구조를 사용
    • 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용하라 수 있게 한다.
    • 실행시간, 메모리 용량 등의 자원을 최소화하여 연산 수행하게끔 한다.
  • 대부분의 자료구조는 특정 상황에 놓인 문제를 해결하는 데에 특화
  • 각각의 자료구조는 각자 연산 및 목적에 특화됨
    • B-트리 는 데이터베이스에 효율적
    • 라우팅 테이블 은 네트워크(인터넷, 인트라넷)에 일반적



자료구조란

  • 자료구조란 여러 데이터들의 묶음을 저장하고, 사용하는 방법의 정의
  • 데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령을 의미

data 란?

  • 데이터는 문자, 숫자, 소리, 그림, 영상 등 현실을 구성하는 모든 값.
  • 데이터는 그 자체만으로 어떤 정보를 가지기 힘들다.
    • 나이라는 데이터 만을 알고 있다면, 이 데이터의 주체에 대해 알 수 없음(사람, 강아지, 나무 등)
  • 데이터는 분석하고 정리하여 활용해야만 의미를 가진다.
  • 데이터를 사용하려는 목적에 따라 형태를 구분하고, 분류하여 사용
    ➡️ 데이터를 정해진 규칙없이 저장하거나, 하나의 구조로만 정리하고 활용하는 것보다 데이터를 체계적으로 정리하여 저장해두는게, 데이터 활용에 훨씬 유리
    ➡️ 문제 상황 예시
    • 번호를 다 알지 않고, 이름만 알고도 전화를 할 수 있는 방법
    • 웹 브라우저에서 뒤로 / 앞으로 가는 방법
    • 게임 매칭을 잡을 때, 수많은 사람들을 통제하는 방법



자료구조의 종류와 구분

자료구조는 자료의 특성과 크기, 주요 사용법과 수행하는 연산의 종류, 구현에 필요한 기억 공간 크기에 따라 구분 될 수 있다.

1) 구현에 따른 자료 구조

  • 배열
    • 가장 일반적 구조. 메모리 상에 같은 타입의 자료가 연속적으로 저장됨.
    • 자료값을 나타내는 가장 작은 단위가 자료를 다루는 단위.
  • 튜플
    • 둘 이상의 자료형을 묶음으로 다루는 구조.
  • 연결 리스트
    • 노드를 단위로 함.
    • 노드는 자료와 다음 노드를 가르키는 참조값으로 구성됨.
    • 가르키는 다음 노드가 없으면, 리스트의 끝
  • 원형 연결 리스트
    • 각 노드는 다음 노드를 가리키고, 마지막 노드가 처음 노드를 가리키는 연결 리스트
  • 이중 연결 리스트
    • 각 노드는 이전 노드와 다음 노드를 가리키는 참조값으로 구성.
    • 처음 노드의 이전 노드와 마지막 노드의 다음 노드는 없음
  • 환형 이중 연결 리스트
    • 처음 노드가 이전 노드로 마지막 노드를 가리키고, 마지막 노드가 다음 노드로 처음 노드를 가리키는 이중 연결 리스트
  • 해시 테이블
    • 개체가 해시값에 따라 인덱싱됨.

2) 구조에 따른 자료 구조

구조종류상세
단순 구조2진수
정수/실수
문자/문자열
선형 구조리스트(배열)
연결리스트단순 연결리스트, 이중 연결리스트, 원형 연결리스트
양쪽에서 넣기와 빼기 가능한 일반화된 선형 구조
스택LIFO, 자료들의나열 순서를 바꾸고 싶을 때
FIFO
비선형구조트리뿌리와 뿌리 또는 다른 꼭짓점을 단 하나의 부모로 갖는 꼭짓점들로 이루어진 구조(일반 트리, 이진 트리(+힙))
그래프꼭짓점과 꼭짓점을 잇는 변으로 구성 (방향그래프, 무방향 그래프)
파일 구조순차 파일, 색인 파일, 직접 파일



참조1)
참조2)
이미지

profile
데이터 엔지니어 ing

1개의 댓글

comment-user-thumbnail
2023년 8월 15일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기