210128 자료구조(Data structure) & 알고리즘(Algorithm) 개념

오늘 정리할 내용은

자료구조에 대한 개념이다. 기본적인 내용이지만 다른 사람에게 설명하듯이 정리해보려고 한다.

자료구조데이터 구조(Data Structure) 라는 용어와 혼재해서 사용된다.
대량의 데이터를 효율적으로 관리할 수 있는 데이터 구조를 의미하는 것으로, 현실에 있는 정보를 프로그래밍으로 바꾸려면 정보에서 데이터로 변환이 필요한데 이때 필요한 것이 자료구조이다.

개발자에게 자료구조(데이터 구조)란?

개발자는 현실에 있는 데이터를 활용해서 프로그래밍 언어로 개발을 하기 때문에 데이터를 가지고 개발을 할때 자료구조에 대한 지식은 필수이다. 그리고 데이터 구조에는 다양한 구조들이 있는데, 어떤 데이터 구조를 사용하느냐에 따라 코드의 효율이 즉, 프로그램의 퍼포먼스가 달라진다.

현실에서의 데이터 관리의 예

우리 주변에서 이 데이터를 관리하는 예를 찾아보면, 우편번호와 학생 관리 번호가 있다. 우편번호는 앞의 3자리는 시, 군, 자치구를 의미하고, 뒤의 두자리는 일련번호로 구성이 된다. 학생 관리 번호 또한 학년, 반, 번호로 구성된 번호로 학생들을 관리한다.
이처럼 우리의 일상에서도 데이터를 구조화시켜서 관리하는 경우가 많다.

그럼 대표적인 자료구조(데이터 구조)는?

그럼 데이터 구조에 다양한 구조들이 있다고 했는데, 대표적으로 어떤 자료구조(데이터 구조)가 있는지 살펴보자.
컴퓨터의 이론에 대해서 조금이라도 관심있는 사람이라면 다들 들어보았겠지만, 배열, 스택, 큐, 링크드 리스트, 해쉬 테이블, 힙 등..이 있다.
우리 현실 세계에서 가장 대표적인 데이터 구조는 사전이 있다.


기존에 있는 자료구조(데이터 구조)는 왜 공부해야 하는가?

앞서 이미 언급했듯이 개발자에게 있어 자료구조는 필수이다. 모나리자를 그릴 수 있는 실력은 모나리자를 모방함으로써 그 기술을 습득할 수 있다.
이 말을 왜 하냐면 기존에 존재하는 대표적인 자료구조들을 모방해가면서 필요에 따라 새로운 자료구조를 만들 수 있는 역량을 키울 수 있다는 의미로 예시를 들었다.
실제로 프로그램을 만들때나 기술면접시에도 많이 묻는 개념이기 때문에 알아두면 좋다.

다음으로 정리할 내용은 알고리즘이다.

알고리즘(Algorithm)은 어떤 문제를 풀기 위한 절차/방법을 의미하며, 어떤 문제에 대해서 특정한 입력을 넣으면 원하는 출력을 얻을 수 있도록 만드는 프로그래밍 이다.
우리 현실에서 가장 대표적인 알고리즘은 요리를 만드는 레시피를 예로 들 수 있다.
요리를 하기 위해서는 재료준비 및 손질 단계와 숙성단계 조리단계 등 다양한 단계가 있는데, 얼마만큼의 시간과 저장공간이 필요한지 각 각의 절차적 특성을 고려해야 하기 때문에 여러 측면에서 보았을때 알고리즘과 비슷한 특징을 갖고 있다.

결론적으로 말하자면,

어떤 자료구조를 사용해서 알고리즘을 작성하느냐에 따라 성능이 천지차이고, 요즘과 같이 데이터가 중요해진 시대에는 더욱이 알고리즘의 작성방법은 매우 중요해졌다.
프로그래밍을 잘 할 수 있는 기술과 역량을 보여주기 위해서는 이러한 자료구조와 알고리즘을 잘 활용할 줄 알아야 한다.