Home 자료구조와 알고리즘
Post
Cancel

자료구조와 알고리즘

자료구조와 알고리즘

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

자료구조와 알고리즘을 배우는 이유?

  • 어떤 문제를 해결할 때 어떤 자료구조(배열, 스택, 큐 등)를 사용해서 어떤 알고리즘을 사용할지에 따라 성능에 영향을 미치게 된다. 메모리를 적게 사용할 것인지, CPU를 적게 사용할 것인지에 따라서도 달라지게 된다.
  • 예를 들어서, 1~100까지의 합을 구한다고 할 때 배열에 1부터 100까지 넣은 후 반복해서 더해주는 방법이 있다. 하지만 데이터의 양을 20억까지 늘린다면 계산하는 시간도 오래걸릴 뿐더러 배열을 이용하기 때문에 메모리 또한 많이 이용할 것이다. 이럴경우 등차수열의 합을 이용하면 메모리와 계산시간을 많이 줄여줄 수 있다.
This post is licensed under CC BY 4.0 by the author.

[BOJ 17427] 약수의 합 2

시간복잡도와 공간복잡도

Comments powered by Disqus.