Study/SW Algorithm

자료구조와 알고리즘

하르문드 2011. 9. 1. 11:51
자료구조(Data Structure)

  추상적으로 나타낸 자료의 모습과 그것을 다루는 연산에 대한 정의라고 하지만 컴퓨터를 공부하는 입장에서 자료구조란 컴퓨터의 메모리에 데이터를 어떻게 정의하고 저장할 것인가에 대한 방법론이다.

  다양한 자료구조가 있지만 막상 생각해보면 기본 자료형과 그 자료형의 응용형태로 나누어진다고 생각한다.

<< 기본 자료형 >>
  배열 (Array)
  리스트 (Linked-List)

<< 응용 자료형 >>
  스택 (Stack)
  큐 (Queue)
  트리 (Tree)
  그래프 (Graph)

  그외에도 
  백터 (Vector)
  디크 (Deque)
  우선순위 큐 (Priority Queue)
  집합 (Set)
  맵 (Map)
  등등 많이 있겠지만 결국 기본 자료형과 응용 자료형을 더욱 발전 시킨 형태로 상황에 따라 특화된 형태들이 아닐까 한다.



알고리즘(Algorithm)

  어떤 문제의 해결을 위하여 입력된 자료를 토대로 하여 원하는 출력을 유도하여 내는 규칙의 집합이다. 즉 데이터를 처리하기 위한 일련의 절차와 방법이다.

  알고리즘이란건 문제를 얼마나 효율적으로 풀수 있는 것인가 하는 것이기 때문에 현재 알려져있는 알고리즘은 다양하게 있지만 정답은 없다. 단지 현재까지 가장 효율적이다라고 알려진 것이기 때문이다. 따라서 얼마든지 더 나은 알고리즘은 만들어 질 수도 있다.

  이러한 알고리즘의 설계 기법으로는
  분할 정복법 (Divide and Conquer)
  동적 계획법 (Dynamic Programming)
  탐욕알고리즘 (Greedy Algorithm)
  백트래킹 (Backtracking)
  등이 있다.



  자료구조랑 알고리즘을 뗄래야 뗄수 없는 관계인듯 하다. 자료구조를 구현하기 위해 필요한 것이 알고리즘일 것이고 알고리즘의 효율을 위해서 필요한 것이 자료구조일테니 말이다.

   컴퓨터를 공부하는 사람이라면 효율적인 프로그램에 대해 생각해보기 위해서라도 자료구조와 알고리즘을 꼭 공부해 볼 필요가 있다고 생각한다.