본문 바로가기

쉽게 풀어본 IT 기술

알고리즘을 뭐라 말할까?

자료구조가 데이터를 다루는 구조였다고 하면 알고리즘은 어떤 기능을 동작시키기 위한 과정이다. 프로그램은 기본적으로 다루고자 하는 데이터와 알고리즘으로 이뤄진다. 기본적으로 무엇을 넣으면 어떤 결과가 나온다는 것이 알고리즘이다.

수학의 모든 공식이 알고리즘이고, 내가 미리 정해놓은 약속들이 알고리즘이다. 알고리즘은 문제를 풀어가는 방법이다. 어떤 식으로 풀면 된다라는 것도 알고리즘이다. 예를 들면 지금 있는 곳에서 서울 시청까지 가는 방법도 하나의 알고리즘이 될 수 있다. 길찾기 알고리즘에 해당된다. 알고리즘은 정해진 한가지만 있는 것이 아니다. 버스를 탈 수도 있고, 택시를 탈 수도 있고, 지하철을 타고 갈 수도 있다.

문제를 풀어가는 방법이라는 것이다. 문제를 풀어감에 있어서 최단 시간이 걸렸다든지 최저 비용으로 갔다든지 하면 이것이 어떤 목적이냐에 따라서 필요한 알고리즘이 될 수도 있다. 최단 거리 알고리즘 같은 말이 나올 수 있다. 문제를 풀어가는 방법이 거리를 가장 짧게 했는지, 최소 비용 알고리즘과 같이 가장 비용을 적게 썼는지가 나올 수 있다.

단순한 예제도 있지만, 복잡한 예제들도 있을 수 있다. 문제를 풀어가는 방법이 알고리즘이라서 스스로 만들어갈 수 있다. 또 많은 문제들에 대해서 이미 많은 학자들 또는 사람들에 의해서 알고리즘이 만들어지기도 했다. 그래서 그러한 알고리즘을 이용해서 개발을 할 수도 있다. 알고리즘을 만들어 낸다는 것은 프로그램에 있어서 매우 중요하다. 프로그램의 절차를 만들어내는 것이다. 프로그램이 어떻게 동작되게끔 순서를 만드는 것이다.

가장 많이 쓰여지고, 기본적인 알고리즘이 정렬이다. 정렬은 순서대로 나열하는 것이다. 순서대로 나열하는 것은 많은 곳에서 의미있게 사용되어질 수 있다.

정렬을 엑셀로 데이터를 만들다가도 쇼핑몰에서 판매량순으로도 본다고 했을 때 이것들이 정렬에 해당된다. 프로그램 내부적으로도 어떤 자료들을 정렬하여 검색을 하기도 하고, 저장을 하기도 한다.

순차적으로 만드는 것은 알고리즘 상에서 필요로 하는 과정이기도 한다. 그래서 순서를 정하는 것에도 알고리즘이 필요하다. 정렬 알고리즘이라고 하는데, 이 정렬 알고리즘에는 몇가지 방법이 있다.

버블 정렬 - 물방울이 물밑에서 보글보글 올라온다고 해서 버블 정렬이라고 한다.
퀵 정렬 - 빨리 정렬을 할 수 있다고 해서 퀵정렬이라고 한다. 이 방법은 정렬을 하고자 하는 수들을 두분류로 나누고, 정렬을 하고, 그 분류를 합쳐서 정렬을 하는 방식을 몇번 거쳐서 정렬을 하게 된다.

어떤 정렬방법이 일방적으로 좋다고 할 것은 아니고 해당하는 자료의 형태에 따라서 정렬을 높은 순으로 정렬할 수도 있고, 낮은 순으로 정렬할 수도 있다.

검색은 자료 구조 내에서 자료를 찾는 것이다. 우리가 흔하게 사용하는 검색엔진이 대표적으로 활용한 예이다. 우리가 찾고자 하는 값을 찾는 것이다. 자료를 검색하려면 자료들이 잘 정리해져 있는 것이 유리하다.

우리가 도서관에서 책을 찾을 때에도 무언가 기준에 의해서 잘 정리되어 있다면 자료를 쉽게 찾을 수 있듯이 말이다. 자료를 얼마나 구조화 시켜 놓는가에 따라서 얼마나 빠르게 찾을 수 있는지도 결정이 된다.

1에서 100까지의 숫자 중에서 70을 찾는다고 했을 때 1에서부터 다음을 넘기면서 70을 만날 때까지 찾을 수도 있지만, 이렇게 하면 비효율이 된다. 이 비효율에 대해서 조금더 속도나 성능을 개선하는 것들에 대한 시도가 많이 이뤄졌다. 이 개선은 바로 중간 값을 찾아보고 그 값이 70보다 큰지 그리고 작다면 그 값과 맨 마지막 값의 중간값을 찾아보고 70보다 큰지 등으로 몇번에 걸쳐서 어림잡아 접근하는 방식이 된다. 이러한 경우 어떤 경우에 대해서는 굉장히 빠른 효율을 나타낼 수 있다.


책처럼 전체를 보기를 원하시면 아래 링크를 클릭하시고 북마크 하셔서 보시면 편리합니다. 

https://wikidocs.net/22313