자료구조와 알고리즘
들어가며
한번쯤은 들어봤을 두 단어는 둘이 같이 혼용해서 쓰거나 책을 보면 한권에 묶여있는 경우 등을 볼 수 있다.
두 단어의 차이와 정의를 정리해본다.
자료구조와 알고리즘
자료구조란 이름 그대로 자료는 담는 구조이다. 알고리즘은 어떤 문제를 해결 하기 위한 방법이다. 이렇게 말로만 들으면 감이 안오니 예를 들어본다. 예는 자료구조와 알고리즘에 차이에 대한 예로 가장 많이 드는 책장으로 소개한다.
책장에 책을 꽂을때 책을 이름순으로 꽂을 건지, 연도 순으로 꽂을 건지 아니면 책을 세로로 또는 가로로 나열해서 꽂아둘건지를 결정하는 것을 자료구조라하며 알고리즘은 이렇게 꽂은 책들중에서 책을 찾을때 왼쪽부터 책을 찾을 건인지 아니면 오른쪽부터 찾을 것인지, 아니면 무작위로 찾을 것인지를 결정하는 것이다.
정리를 하자면
자료구조 == 어떻게 효율적으로 자료를 저장할 것인가에 대한 고민 (데이터 표현 및 저장방식)
알고리즘 == 문제를 해결하기 위한 절차에 대한 고민 (명령 처리 및 제어 방법)
아무래도 프로그램 자체가 자료구조 + 알고리즘으로 구현되어 있다보니 이러한 과정에서 헷갈려하는 경우가 있다.
배열, 링크드리스트, 큐, 힙, 이진트리, 좌향트리, 2-3트리, 그래프 이런 것 자체는 자료구조라고 하지 알고리즘이라고 하진 않는다. 하지만 혼동되는 이유는 이러한 자료구조를 만들 때, 그리고 탐색할 때 특정한 알고리즘이 개입되어야 하기 때문이다.
저장된 데이타를 저장하거나 찾거나 변형하거나 수정할 때 필요한 방법을 알고리즘이라 한다.
버블소트, 퀵소트, 혹은 최단거리찾기, 압축 알고리즘, 이진 탐색(이진 트리 자료구조가 필요함) 등이 있다.