본문 바로가기

CS & CE & DS & DA 공통/자료구조(Data Structure)

자료구조 개관 (Data Structure Overview)

자료구조 정의

자료구조(資料構造, 영어: data structure)
컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다.
더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미한다.

자료구조 목적

효과적으로 설계된 자료구조는 실행시간 혹은 메모리 용량과 같은 자원을 최소한으로 사용하면서 연산을 수행하도록 해준다.
다양한 프로그램을 설계할 때, 어떠한 자료구조를 선택할지는 가장 우선적으로 고려되어야 한다.
큰 시스템을 제작할 때 구현의 난이도나 최종 결과물의 성능이 자료구조에 크게 의존한다는 것을 많은 경험이 뒷받침하기 때문이다. 일단 자료구조가 선택되면 적용할 알고리즘은 상대적으로 명확해지기 마련이다. (알고리즘은 자료구조에 의존적이므로 자료구조에 적합한 알고리즘의 대부분 정해져있다. 그러므로 자료구조와 알고리즘은 같이 배우는 것이 좋다.)
때로는 반대 순서로 정해지기도 하는데, 이는 목표로 하는 연산이 특정한 알고리즘을 반드시 필요로 하며, 해당 알고리즘은 특정 자료구조에서 가장 나은 성능을 발휘할 때와 같은 경우이다. 어떠한 경우든, 적절한 자료구조의 선택은 필수적이다.

자료구조 분류

단순구조
True/False, 정수, 실수, 문자, 문자열과 같이 컴퓨터가 기본적으로 제공하는 자료형(Data Type)

 

선형구조
데이터들의 관계가 1:1이며, 데이터들이 일렬로 저장되어 있는 형태

 

비선형구조
계층, 망 구조 등 데이터를 일렬로 나열하기 힘들고 자료의 순서가 불규칙해서 연결 관계가 복잡한 구조

 

파일구조 
서로 관련있는 필드(Field)로 구성된 레코드(Record)집합인 파일에 대한 자료구조로 보조 기억장치에 데이터가 실제로 기록되는 형태

자료구조 구현방법

물리적으로 구현하는 방법은 배열(Array, Sequential LIst)과 연결리스트(Linked List)가 있다.
배열은 각 데이터를 연이어서 저장하는 방식으로 실제 메모리에서 물리적으로 연달아 저장된다.
이 경우 물리적 논리적 위치가 같다고 한다.
연결리스트는 각 데이터를 임의의 위치에 저장하고 서로 연결하는 방식으로 실제 메모리에서 물리적으로 떨어져 있지만 저장된 데이터의 메모리 주소를 넘겨받아 논리적으로 연달아 저장한다. 이 경우 물리적 논리적 위치가 다르다고 한다.
위 두가지 물리적 구조를 기반으로 대부분의 자료구조를 구현한다.
즉 다양한 자료구조의 내부적 모습을 보면 리스트와 연결리스트를 이용해 구현된다. 
그래서 위 두 자료구조를 기본 자료구조라 한다.
자료구조는 개념상으로 존재하는 것이므로 모든 언어로 구현 할 수 있다. 이것을 언어 독립적이라고 한다.
정리하자면 자료구조란 리스트를 이용해 데이터를 효율적으로 처리하는 방법론이라고 할 수 있다.

자료구조 선택기준

데이터의 처리시간
데이터의 CRUD(생성, 읽기, 갱신, 삭제)에 걸리는 시간이 얼마나 소요되는지

 

데이터의 크기
데이터의 갯수가 10개인지 100만개 인지

 

데이터의 활용빈도
데이터 호출이 얼마나 자주 있는지 그리고 자주 호출되는 특정 데이터가 있는지

 

데이터의 갱신빈도
데이터 재생성이 얼마나 자주 있는지

 

프로그램의 용이성
최종적으로 지향하는 프로그램의 데이터를 처리하기에 적합한 구조인지

 

Reference
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0

 

자료 구조 - 위키백과, 우리 모두의 백과사전

자료구조(資料構造, 영어: data structure)는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다.[1][2][3] 더 정확히 말해, 자료 구조는 데이터 값의 모임, 또

ko.wikipedia.org

https://bnzn2426.tistory.com/115

 

자료 구조(Data Structure) 개념 및 종류 정리

자료 구조란? 데이터 값의 모임, 각 원소들이 논리적으로 정의된 규칙에 의해 나열되며 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것. 예를 들어 한정된 크기의

bnzn2426.tistory.com

https://velog.io/@filoscoder/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%A2%85%EB%A5%98%EC%99%80-%EB%B6%84%EB%A5%98

 

[Data structure] 자료구조 종류와 분류

컴퓨터의 데이터 취급 방법 컴퓨터가 입력받는 자료형(Data type) 또는 처리해야 하는 자료형의 모양은 어떤 것이 있을까요? 실제 컴퓨터는 0과 1만을 다룰 수 있기 때문에 다룰 수 있는 기본형의

velog.io