아카이브/자료구조

[자료구조 정의] 자료구조와 알고리즘의 정의 그리고 연결고리

될성부른떡잎 2015. 7. 3. 18:24


[자료구조 정의] 자료구조와 알고리즘의 정의 그리고 연결고리


자료구조와 알고리즘의 정의와 상관관계

자료구조 : 데이터를 표현하고 저장하는 방법

알고리즘 : 문제 해결 방법

어떤 자료구조를 쓰느냐에 따라 문제를 해결하는 방법이 달라지고 성능도 달라지게 된다.

모든 상황에 좋은 자료구조는 존재하지 않는다. 상황에 따라 효율적인 자료구조를 선택하고 알고리즘을 구현해야한다.


자료구조란?

우리가 평소에 많이 사용했던 정수형 변수 int, 구조체, 배열 등 데이터를 저장하기 위해 사용했던 것들 모두 크게 보면 자료구조에 속한다.

자료형이나 배열등은 너무 간단한 자료구조이기에 자료구조론에서는 주로 선형, 비선형 자료구조를 다룬다.


선형 자료구조(Linear Data Structure)

- 데이터를 선의 형태로 나란히 혹은 일렬로 저장하는 방식

- 리스트. 스택, 큐, 덱...


선형 자료구조(Non-linear Data Structure)

- 데이터를 나란히 저장하지 않는 구조

- 트리, 그래프...


정리

자료구조를 너무 어렵게 생각할 필요 없다. 자료구조는 컴퓨터에서 데이터를 저장하는 구조일 뿐이다.

효율적으로 데이터를 저장하고 사용하기 위해 여러 자료구조들을 배우는 것이다. 

자료구조를 학습하다 보면 오히려 자료구조가 비효율적으로 느껴질 수도 있다. 하지만 많은 데이터를 다루는 경우, 자료구조를 이용해 데이터를 관리하는게 효율적일 때가 많다. 물론, 배열로 충분한 프로그램에서 복잡한 자료구조를 쓰는건 좋지 못하다.

요즘 언어들은 라이브러리에서 자료구조를 지원해 주기 때문에 직접 구현하지 않고도 간단히 사용가능하다. 보통, 라이브러리의 자료구조를 이용해 프로그래밍 하겠지만 자료구조를 수정하거나 본인이 직접 프로그램에 맞게 구현해야하는 경우도 있다. 그 때를 대비해서 자료구조의 원리와 구현은 충분히 알아두는 것이 좋다.