자료구조와 알고리즘
- 자료구조가 무엇인지 위키를 확인해보면 자료구조는 효율적인 접근 및 수정을 가능하게 하는 자료의 조직, 관리, 저장을 의미한다고 나와있다. 위의 말 그대로 자료를 어떻게 구성(조직)할 것이고 어떤 방식으로 관리하고 저장할 것인지를 말한다.
- 자료구조는 알고리즘과 밀접한 관계를 맺고 있는데, 한가지 간단한 예를 들어보면 다음과 같다.
[예시]- A가 일하는 편의점에 홈런볼 5박스가 들어왔는데 박스마다 유통기한이 다르게 들어왔으며 쌓여있는 순서도 유통기한 순서에 맞게 쌓여있는 것이 아니라 뒤죽박죽 섞인채로 쌓여있었다.
- A는 홈런볼 재고관리를 쉽게하기 위해 유통기한이 가장 길게 남아있는 박스를 아래에 쌓고 위로 쌓을수록 유통기한이 짧게 남은 박스를 올려두었고, 맨 위에 유통기한이 가장 짧게 남은 박스의 홈런볼부터 차례대로 매대에 진열해 놓았다.
- 진열된 홈런볼들이 다 팔릴때마다 한박스씩 맨 위에 쌓여있는 박스를 바닥으로 내려 홈런볼들을 꺼낸 후 진열하였다.
- 위 예시에서 홈런볼은
자료
를 의미한다. 그리고 이 홈런볼들을 모아놓은 박스를조직
이라고 할 수 있다. 즉, 관련있는 것들(홈런볼)을 어떤 방식으로 구성(박스)할 것인지를 말한다. 그리고 유통기한 순서대로 홈런볼을 판매하는데 이것을관리
라고 한다. 이 박스들을 유통기한 순서대로 가장 길게 남은 박스는 아래에 두고 위로는 유통기한이 짧은 박스를 쌓아두는데 이 쌓아두는 것을저장
이라고 한다. 마지막으로 맨 위에 쌓여있는 박스를 바닥으로 내려 홈런볼을 꺼내 진열하는 행위를알고리즘
이라고 한다. - 위 저장방식은
LIFO(Last-In First-Out)
로 나중에 들어간 데이터가 먼저 나오는 자료구조인스택
을 이용하였으며,알고리즘
은 이 자료구조를 이용하여 어떻게 문제를 해결하는지를 말한다. 즉, 자료구조가 결정되어야 그에 맞는 알고리즘을 결정할 수 있기 때문에 자료구조와 알고리즘은 밀접한 관계를 맺고 있다고 볼 수 있다. 물론 자료구조가 달라지면 알고리즘도 바뀌어야 한다. 위 예시에서 스택 자료구조가 아닌 큐(Queue) 자료구조가 쓰인다면 그에 맞는 알고리즘(맨 위의 상자를 아래로 내린 후 홈런볼을 꺼내는 행위)도 바뀌어야 한다는 뜻이다.
자료구조와 알고리즘을 배우는 이유?
- 어떤 문제를 해결할 때 어떤 자료구조(배열, 스택, 큐 등)를 사용해서 어떤 알고리즘을 사용할지에 따라 성능에 영향을 미치게 된다. 메모리를 적게 사용할 것인지, CPU를 적게 사용할 것인지에 따라서도 달라지게 된다.
- 예를 들어서, 1~100까지의 합을 구한다고 할 때 배열에 1부터 100까지 넣은 후 반복해서 더해주는 방법이 있다. 하지만 데이터의 양을 20억까지 늘린다면 계산하는 시간도 오래걸릴 뿐더러 배열을 이용하기 때문에 메모리 또한 많이 이용할 것이다. 이럴경우 등차수열의 합을 이용하면 메모리와 계산시간을 많이 줄여줄 수 있다.
Comments powered by Disqus.