본문 바로가기

Data Structure [C]/문돌이도 할 수 있는 [C언어 자료구조]

#2 [C 자료구조] 자료구조와 알고리즘을 배우는 목적?

데이터 사이언스에 왜때문에 자료구조?

 

데이터 사이언스 공부를 시작하면서 자료구조는 나에게는 쓸모 없는 분야라 생각했었다.

알고리즘의 효율성을 논하는 것은 결국 나보다 더 컴돌이인 전문가들이 해야하는 것 아닌가?

실제로 이미 시중에는 다양한 라이브러리로 구현이 다되어있어서 상황에 맞게 쓰기만해도 무관할 수 있다고 생각했다.

하지만!! 자료구조의 목적과 중요성을 공부하고선 생각을 완전 뒤바꿨다.

 


두괄식으로 이야기하자면 자료구조는 프로그래밍이라는 거대 건축물의 철골 구조물이자 뼈대이다.


[이것이 자료구조다!ㅎㅎㅈㅅ]



즉 다시 말해 자료구조에 대한 이해 없이는 모래성, 혹은 그와 다를 바 없는 부실공사를 할 수 밖에 없다는 뜻이다.



데이터 사이언스를 함에 있어서 자료구조를 배워야하는 목적은 무엇일까?

 

 

자료구조를 배우려는 의지

 

자료구조의 뜻을 알아보자 일단.

 

자료구조(資料構造, 영어: data structure)는 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미한다. [출처: 위키피디아]

그만알아보도록하자


 

문돌이스럽게 설명하자면 자료구조를 짜는 것은 결국 건물 목적에 맞는 뼈대를 선택하는 과정이다. 호텔과 아파트, 대형 운동장의 뼈대의 모습은 분명 달라야할 것이다.

자료구조 위에 붙는 알고리즘은 건축물을 짓는 방법론에 해당한다고 볼 수 있다. 지하를 먼저 팔지, 1층부터 층층이 올릴지, 인테리어는 어떻게 할지 등등 모든 방법론은 바로 알고리즘에 해당한다.

 


자료구조를 잘 선택해야, 이를 통한 알고리즘을 짤 수 있다. 그러나 반대로 알고리즘을 먼저 선택하고 이에 맞는 가장 효율적인 자료구조를 선택하기도 한다. 떼어낼 수 없고 없어서도 안되는 프로그래밍의 뼈와 살!


 

데이터 사이언스 분야에서도 어중간하게 툴만 이용해 다룰 사람이 아니라면 반..시 배우고 넘어가야한다알고리즘과 자료구조만 잘 짜놔도 슈퍼컴퓨터가 필요한 일들을 가정용 GPU로 해결할 수 있다. 또 잘 짜지 못한다면 반대로도 마찬가지.



적게는 백만개, 많게는 수천억개의 raw data를 처리, 분석해야하는 데이터 사이언티스트에게 부실한 건물뼈대는 언젠가는 치명적으로 작용한다. 우리는 이제 건실한 건축물을 만들기 위해 밑작업을 하러들어간다!



[삽질 가즈아!]

 



글 많이 쓰는건 귀찮다! 오늘은 여기까지