관리 메뉴

Fintecuriosity

[알고리즘] 좋은 알고리즘이란 어떤 것인가? 본문

Computer Science/알고리즘

[알고리즘] 좋은 알고리즘이란 어떤 것인가?

DataHolic26 2020. 8. 5. 01:24

 

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

 

★ 프로그램의 품질은 알고리즘이 좋고 나쁨에 따라 달렸습니다.

 

Q) 그러면 알고리즘의 좋고, 나쁨은 어떠한 기준을 가지고 판단하는 것일까요?

 


 

1) 알기 쉽다

알고리즘은 가능한 알기 쉬워야 합니다. 특히, 여러 사람들이 작업할 때 다른 사람이 곧바로 이해할 수 없다면 이해를 시키거나 설명을 하는 데 많은 시간이 걸리고, 실수를 범하기도 쉽습니다.

 

설계에서 프로그래밍까지 혼자 수행하는 경우에도 알고리즘이 어렵거나 복잡하면 나중에 수정하거나 기능을 추가할 때 그것을 만든 본인조차 이해하지 못하는 불상사가 발생할 수도 있습니다. 또한, 복잡하고 난해한 알고리즘은 올바른 결과가 나타나는지도 검증하기 어렵기 때문에 틀린 부분을 찾기 어렵습니다. 때로는 상황에 따라 어쩔 수 없이 복잡해질 수 밖에 없는 경우도 있지만, 가능한 한 알기 쉽게 작성하는 것이 좋습니다.

 

2) 속도가 빠르다

속도가 빠르다는 것은 실행한 후 그 결과가 나타날 때까지의 시간이 짧다는 것을 의미합니다. 결괏값이 같다면, 짧은 시간에 올바른 결과를 얻을 수 있는 알고리즘이라야 좋은 알고리즘이라고 할 수 있는 것입니다.

 

3) 효율적입니다

'효율적이다'라는 것은 '프로그램을 실행할 때 사용하는 메모리의 영역이 작다' 라는 것을 의미합니다. 옛날만큼은 아니지만, 메모리는 컴퓨터 부품 중 고가에 해당합니다. 프로그램의 효율이 나쁘면 대량의 메모리가 필요하기 때문에 그만큼 쓸데없는 비용이 들게 됩니다. 물론 '실행 결과가 정확하다.'라는 조건은 같지만, 이왕이면 효율적인 알고리즘이라야 좋은 알고리즘이라고 할 수 있습니다.

 

4) 재이용하기 쉽다

프로그래밍 시간을 단축하려면 코딩하는 속도 자체를 높이는 일도 하나의 방법이 될 수 있습니다. 하지만 이에는 한계가 있습니다. 과거에 작성한 프로그램을 그대로 사용하거나 부분적으로 이용하는 비율이 증가하면 새로운 프로그램을 작성하는 시간이 줄어듭니다. 프로그램을 작성할 때는 가능한 재이용하기 쉽고, 범용성이 높은 알고리즘을 고려하면 프로그램을 재이용할 가능성이 높아집니다.

 


 

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