(Dev 지식으로서의 자료구조 및 알고리즘 개념 설명. 글 아래의 개념을 이해하고, 자료구조,알고리즘 카테고리에 관련한 글을 같이 읽으면 좋다.)

 

자료구조란 데이터에 편리하게 접근하고, 변경하기 위해서 데이터를 저장하거나 조작하는 방법을 말한다.

만약에 사과를 담는 용기가 필요하다고 생각해보자. 사과를 멀리 가지고 가려는 목적이라면 바퀴가 달려있는 수레 같은게 필요할 수 있다. 자주자주 꺼내 먹기 위한 용기가 필요하다면 손을넣어 꺼낼수있는 백이나 바구니 같은 형태가 적합하다고 할수있겠다.어떤 자료구조를 선택하느냐에 따라 퍼포먼스가 달라진다.

 

알고리즘이란 어떠한 문제를 해결하기 위한 일련의 절차나 방법을 공식화한 형태로 표현한 것을 의미한다.

알고리즘은 9세기 페르시아의 수학자인 무함마드 알콰리즈미의 이름을 라틴어화한 알고리스무스(Algorismus)에서 유래한 표현이다. 유한성을 가지며, 언젠가는 끝나야 하는 속성을 가지고 있다. 문제 해결을 위해 여러 개의 후보 알고리즘 중, 정확성과 효율성 등을 평가한 후에 최적의 알고리즘을 선택한다. 알고리즘은 연산, 데이터 진행 또는 자동화된 추론을 수행한다.

 

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

자료구조는 '데이터의 표현과 저장방법'을 의미한다고 하였다. 그렇다면 알고리즘은 무슨 의미일까? 사람들은 알고리즘을 공부하려면 자료구조를 공부해야한다고 한다. 알고리즘은 그러한 데이터를 대상으로 '문제의 해결 방법'을 의미한다.

예를들어 배열에 값을 저장하는 것은 자료구조적이지만, 그 배열을 통해서 총합을 구하는 코드는 알고리즘적인 코드라고 할 수 있다.

 

 

< 자료구조와 알고리즘이 필요한 이유 >

1. 메모리를 절약하기 위해

  • 가장 기본적인 이유이며 불필요하고 추가적인 정보 없이 목적에 부합하는 정보만을 저장하면 되기 때문에 저장 공간을 효율적으로 사용할 수 있다.

2. 프로그램 실행 시간을 단축하기 위해

효율적은 구조를 구현함으로 불필요한 계산을 줄이고 프로그램의 실행 시간을 단축 시켜준다.

(이러한 절차를 '알고리즘'이라고 한다.)

 

3. 프로그램 구현과 유지보수를 쉽게 하기 위해

  • 효율적은 구조는 프로그램 개발을 쉽게 만들어주고 이해하기 쉬워 협업자들로 하여금 분석하는 시간을 줄여준다.

 

 

 

 

+ Recent posts