pat coding

[자료구조] 자료구조란? (Data Structure) 본문

Data structure, Algorithm

[자료구조] 자료구조란? (Data Structure)

uuukpyo 2019. 11. 4. 13:09
728x90

자료구조란 무엇인가

사전적의미로 자료구조

효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미합니다.

더 정확히 말해, 자료 구조는 데이터 값의 모임, 또 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미합니다.

신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있습니다. 

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

 

 

자료구조의 특징

1. 효율성

앞서 설명 했듯이 자료구조를 사용하는 목적은 효율적인 데이터의 관리 및 사용입니다.

따라서 적절한 자료구조를 선택하여 사용한다면 업무의 효율이 올라갈 것입니다. 한가지 예를 들어보자면 검색에 대한 알고리즘을 구현할때, 데이터의 양이 많다면 순차 검색(Linear Search)를 사용하는 것 보다 이분 검색(Binary Search)

활용하는것이 더 효율 적일 것입니다. 왜냐하면 학생이라는 테이블에 학생에 대한 데이터가 100만개 있다고 할때, 순차 검색으로 데이터를 검색하게 되면 운이 좋을때는 1번의 연산으로 찾을 수 있겠지만, 운이 없을경우에는 100만번의연산을 거쳐야 할 것입니다. 이에 반해 이분 검색은 연산의 횟수가 훨씬 줄어들죠. 이와같이 목적에 맞는 자료구조를 사용하는것이 효율적입니다.

 

2. 추상화

추상화란 복잡한 자료, 모듈, 시스템 등으로 부터 핵심적인 개념만 간추려 내는 것입니다. 자료구조를 구현할 때 중요한 것은 어느 시점에 데이터를 삽입할 것이며, 어느 시점에 이러한 데이터를 어떻게 사용할것인지에 대해서 초점을 맞출수 있기 때문에 구현 외적인 부분에 더 시간을 쏟을 수 있습니다. 알고리즘 자체에는 중점을 두지 않습니다.

마찬가지로 자료구조 내부의 구현은 중요하지 않습니다. 어떻게 구현했는지 보다 어떻게 사용해야 하는지를 알고 있어야 합니다.

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

3. 재사용성

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

 

자료구조의 분류

자료구조는 크게 선형 자료구조비선형 자료구조로 나뉩니다.

선형 자료구조의 경우 데이터가 일렬로 나열되어 있는 것을 뜻하고, 비 선형 자료구조는 특정한 형태를 띄고 있는 것을 뜻하는데, 각각에 해당하는 자료구조는 아래와 같습니다.

 

선형구조

- 배열(Array)

- 연결 리스트(Linked List)

- 스택(Stack)

- 큐(Queue)

 

비선형 구조

- 트리(Tree)

- 그래프(Graph)



출처: https://andrew0409.tistory.com/148 [코인하는 프로그래머]

 

 

728x90
Comments