본문 바로가기
General/Data Structure

자료구조(Data Structure)에 이해

by Awesome-SH 2020. 9. 20.

개발자에게 기본기란 무엇일까? 현업에 있으면서도 항상 생각하게 되는 질문입니다.

오늘은 이 질문에 해당하는 첫번째, 자료구조에 대해 정리해 보고자 포스팅을 하게 되었습니다.

 

자료구조

사전적 의미로 자료들의 집합을 의미합니다.

각 데이터들이 논리적으로 정의된 규칙에 의해 나열되고

자료에 대한 처리를 효율적으로 수행할 수 있도록

자료를 구분하여 담아 놓은 것이라고 할 수 있습니다.

 

자료구조를 사용하는 목적

자료를 더 효율적으로 관리하기 위해 사용합니다.

잘 선택된 자료구조는 실행시간을 단축시켜 메모리의 절약을 이끌어 낼 수 있습니다.

 

자료구조의 특징

효율성, 추상화, 재사용

 

1) 효율성

자료구조를 사용하는 목적이자 특징은 효율적인 데이터 관리와 사용입니다.

적절한 자료구조를 선택하고, 또 사용한다면 실행시간을 단축시키고 효율성이 올라갈 수 있습니다.

예) 검색 알고리즘을 구현할 때, 데이터의 양이 많다면 순차검색(Linear Search) 보다는
이분검색(Binary Search)를 활용하는 것이 더 효율 적입니다.

 

2) 추상화

추상화란 말그대로 복잡한 자료로 부터 핵심적인 개념만 간추려 내는 것입니다.

자료구조를 구현할 때에 가장 중요한 것은 어느 시점에 데이터를 삽입할 것이며

어느 시점에 데이터를 꺼내 사용할 것인지에 대해 초점을 맞출 수 있기 때문입니다.

 

예) 스택(Stack)은 FILO(First In Last Out) 먼저 들어간것이 가장 나중에 나오는 형태를 가지고 있습니다.
push() 함수를 이용해 데이터를 삽입할 수 있고, pop() 함수를 이용해 데이터를 꺼낼 수 있습니다.
내부 구현코드가 중요하지 않습니다. 사람마다 다른 코드를 작성하기도 하고
사용언어, 개발 툴 등 다양한 변수에 의해 다른 코드가 나올 것이기 때문에
추상적인 개념에 대해서만 이해하고 있다면 사용할 수 있습니다.

 

3) 재 사용성

자료구조를 설계할 때, 특정 프로그램에서만 동작하게 설계하기 보다는

다양한 프로그램에서 동작할 수 있도록 설계하기 때문에 해당 프로젝트가 아닌 다른 프로젝트에서도 사용할 수 있는것을 말합니다.

 

자료구조의 분류

자료구조의 구분은 선형 자료구조와 비선형 자료구조로 나뉩니다.

선형 자료구조의 경우 데이터가 일렬로 나열되어 있는 것을 말합니다.

비선형 자료구조의 경우 다양한 형태로 나열되 있는 것을 말합니다.

 

선형 자료구조 비선형 자료구조
- 배열 (Array)
- 연결리스트 (LinkedList)
- 스택 (Stack)
- 큐 (Queue)
- 트리 (Tree)
- 그래프 (Graph)

 

 

 

 

참조

andrew0409.tistory.com/148

댓글