관리 메뉴

Fintecuriosity

[알고리즘] 왜 알고리즘을 공부해야 하는가? 본문

Computer Science/알고리즘

[알고리즘] 왜 알고리즘을 공부해야 하는가?

DataHolic26 2020. 8. 5. 01:48

 

이번 글의 내용은 "처음 만나는 알고리즘" 책을 정리 및 참조하였음을 먼저 밝힙니다.

 

★ 최근에 여러 가지 편리한 프로그래밍 툴이 개발되어 알고리즘을 공부한 적이 없는 사람들 또한 보편적으로 프로그램을 작성할 수 있게 되었습니다. 실제로 현장에서 일하고 있는 프로그래머 중에서도 알고리즘을 전혀 배운 적이 없는 사람이 많습니다.

 

Q) 그렇다면 알고리즘을 꼭 공부해야 하는 이유가 있을까요?

 


1) 좋은 프로그램을 만들기 위해서

좋은 프로그램을 속도가 빠르고, 효율적이며, 범용성이 높아야 합니다. 좋은 프로그램을 만들기 위해서는 그 골격이 되는 좋은 알고리즘을 만들 필요가 있습니다. 알고리즘을 공부하는 첫 번째 목적은 좋은 알고리즘을 만드는데 있습니다.

 

 

2) 프로그램의 좋고 나쁨을 판단하기 위해서

최근에는 프로그램을 작성할 때 알고리즘을 처음부터 생각하는 일이 그다지 많지 않습니다. 간단한 프로그램은 이미 누군가가 만든 프로그램의 일부분을 조합하는 것만으로도 쉽게 만들 수 있습니다. 이러한 이유 때문에 앞으로 알고리즘을 의식할 기회가 점차 줄어들게 될 것이고, 이로 인해 알고리즘을 공부할 필요가 없어질 것이라는 의견도 있었습니다.

 

실제로 프로그램을 작성하는 데 있어 기술의 조합이 점차 중요해지고 있습니다. 하지만 이러한 방식으로 프로그램을 만든다고 하더라도 좋은 프로그램을 작성하기 위해 어떤 프로그램을 사용할 것인지에 대한 결정은 결국 사람의 몫이라고 할 수 있습니다.

 

하나의 문제나 과제를 해결하기 위한 알고리즘이 반드시 하나뿐이라고 말할 수는 없습니다. 처음에 발견한 프로그램이 반드시 좋은 프로그램이라고 말할 수 없는 경우도 있습니다. 그러나 알고리즘을 제대로 공부한 사람이라면 프로그램의 소스 코드만 보고도 좋은 알고리즘인지 판단할 수 있습니다. 앞으로 알고리즘을 처음부터 고려하지 않는 일이 많아진다고 하더라도 알고리즘은 배워 둘 필요가 있습니다.

 

 

3) 프로그램 작성 과정 전체를 효율화하기 위해서

좋은 프로그램은 속도가 빠르고, 효율적이며, 범용성이 높을 때 원하는 목적을 이뤘다고 할 수 있습니다. 게다가 프로그램을 작성하는 전체 과정을 효율화할 수 있다는 장점도 있습니다.

 

프로그래밍이 어느 정도 진행된 시점에서 프로그램이 그다지 효율적이지 않다는 사실이 밝혀지거나 좀 더 실행 시간을 단축하는 방법이 존재한다는 것을 발견한다고 하더라도 대폭적으로 수정하기는 어렵습니다. 설사 수정하더라도 시간이 낭비됩니다. 설계 단계에서 알고리즘을 잘 고려하면 중간에 큰 수정을 하지 않아도 되고, 이는 결국 프로그램의 효율성으로 이루어집니다.

 

집을 지을 때 일단 집을 완성하고 나서 자기가 살고 싶은 집을 선택하는 사람은 없을 것입니다. 집을 지을 때는 건축사가 작성한 설계도를 바탕으로 서로 합의한 후에 실제 건축 작업에 들어갑니다. 프로그램 작성도 이와 마찬가지입니다. 좋은 프로그램을 만들고 싶고, 프로그램을 작성하는 공정을 효율적으로 진행하고 싶은 프로그래머라면 알고리즘 공부에 많은시간을 투자해야 합니다.

 


 

긴 글 읽어주셔서 감사합니다.