알고리즘과 데이터 구조를 공부해야 하는 이유, 공부의 필요성을 못 느낄 때

필요성을 못 느낄 때

개발을 막 시작한 사람들이라면, 가벼운 프로그램들만 만들어왔던 사람들이라면 어렵기만 한 ‘알고리즘과 데이터 구조’를 공부해야 할 필요성을 못 느꼈을 것이다. 그런거없어도 내 프로그램은 잘 돌아가던데?라며 데이터 구조를 외면했을 것이고, 공부해야한다니까 하는데 Big O Notation이라던가, Bubble Sort라던가 하는 어디선가 들어만봤을 녀석들도 어렵기만 했을 것이고, 혹은 억지로 공부했다 하더라도 대기업에 취업하기위해 암기로 공부한 사람들도 있을 것이다. 하지만 거대한 프로그램을 만들고 혹은 반응성이 빨라야 하는 어플리케이션을 만들 때 내가 만든 프로그램은 다른 프로그램에 비해 왜 이렇게 느리지? 라고 생각할 때 알고리즘이 나를 위한, 내 프로그램을 위한 주요한 해결책이 될 수 있을 것이다.

개발을 잘 하는 사람

개발을 잘 하는 사람은 막힘없이 원하는 기능을 구현하는 사람과 프로그램을 어느 정도로 효율적이고(efficient) 관리가 편하고, 빠른 코드를 만드는 사람이라고 생각한다. 그리고 후자의 개발자가 개인적으로 좀 더 개발자적인 개발자가 아닌가? 라고 생각한다(전자와 후자의 경지까지 오른 사람들을 두 개의 경계로 나누는 것 자체가 이상한 일이지만).

데이터 구조와 알고리즘

알고리즘은 결국 여러개의 지시사항이다. 어떠한 액션을 수행하기 위해 컴퓨터가 수행해야하는것들인데 효율적인 알고리즘을 찾으면 우리는 이걸 반복적으로 적용할 수 있다. 예를 들어, 이걸 생활에 적용한다고 하면 우리들이 아침에 일어나서 물 마시고 샤워하고 머리를 말린 다음 나간다. 같은 경우도 하나의 알고리즘이라고 볼 수 있고 컴퓨터의 경우 ‘카카오 맵’의 네비게이션또한 Path finder 알고리즘이 적용된것이라고 볼 수 있고, 엑셀의 정렬또한 sort알고리즘이 적용된 것이라고 볼 수 있다. ‘길을 찾기 위한 알고리즘’, ‘정렬을 위한 알고리즘’등 ’~~문제를 해결하기 위한 알고리즘’이라고 볼 수 있다.

데이터 구조는 간단하게 말해서 데이터를 정리하는 것이라고 할 수 있다. 데이터를 어떻게 정리함에 따라서 프로그램의 속도의 차이가 확연하게 나는데, 프로그램의 목적과 상황에 맞게 ‘검색에 최적화된 데이터 구조’나 ‘정렬에 최적화된 데이터 구조’같은 여러 구조를 적용함으로써 우리들의 프로그램의 데이터 처리 효율성은 높아지고 프로그램의 속도 또한 빨라질 것이다.

데이터 구조와 알고리즘의 차이

데이터 구조는 상황에 맞게 데이터를 저장하기 위한 구조를 말하고, 알고리즘은 데이터 구조 안의 데이터를 활용해서 어떠한 문제들을 해결하기 위한 방법들의 모임이라고 볼 수 있다.

댓글남기기