본문 바로가기

CS(Computer Science)/Algorithm

[알고리즘] 알고리즘이란?

Algorithm
어원: 페르시아의 수학자 알 콰리즈미의 이름 

 

알고리즘이란?

어떤 문제를 컴퓨터로 풀기 위한 효율적인 단계별 절차를 의미한다.

 

그렇다면 우리가 알고리즘을 공부하는 이유는 무엇일까?

'어떤 문제를 컴퓨터로 해결하는 방법에 대한 탐구를 위해', '컴퓨터 과학 연구의 가장 기초적인 분야이기 때문',

'각종 프로그래미밍/ 코딩 경진대회 출전 및 입상을 위해', '코딩테스트를 통해 취업을 하기 위해' 등등...

 

위와 같은 이유가 있겠지만 결국은 '새로운 문제를 만났을 때, 그것을 효율적으로 해결할 수 있는 능력을 기르기 위함!'이다. 

알고리즘은 특정 프로그래밍 언어나 문법과는 무관하며 다양한 문제들에 해답을 찾기 위한 문제 해결 방법을 의미한다.

 

 

문제와 해답

- 문제: 해답을 찾으려고 물어보는 질문

- 파라미터: 쉽게 말하자면 입력 값. 문제에서 특정한 값이 지정되어 있지 않은 변수

  Ex) y = f(x) -> 파라미터: x

      def sort(x, n, S) -> 파라미터: x, n, S

- 입력 사례: 문제의 파라미터에 지정된 특정한 값

- 해답: 파라미터에 대한 답

 

순차 탐색 문제를 예로 들어서 조금 더 풀어서 설명해보자면,

- 문제: 어떤 x가 n개의 수로 구성된 리스트 S에 존재하는가?

- 해답: x가 존재하면 x의 인덱스가, 존재하지 않으면 -1이 해답

- 파라미터: 정수 n(>0), 리스트 S(인덱스 범위는 0부터 n-1까지), 원소 x

- 입력 사례: S = [0, 10, 7, 11, 5, 13, 8], n = 6, x = 5

- 입력 사례에 대한 해답: location = 4

- 알고리즘: 모든 S에 대해서 x의 인덱스를 찾아주는 단계별 절차

 

=> 알고리즘은 입력 파라미터에 어떤 입력 사례가 주어지더라도 효율적으로 해답을 찾을 수 있어야 한다!

 

 

정리하자면,

알고리즘이란 어떤 문제를 컴퓨터로 풀기 위한 효율적인 단계별 절차이며 해당 절차를 거치면 어떤 입력 사례가 주어지더라도 해답을 찾을 수 있어야 합니다.

 

 

 

※ 참고자료 및 강의

'알고리즘 기초 5판 Richard E.Neapolitan 도경구 역. 홍릉과학출판사'

 

알고리즘 기초 - 교보문고

▶ 이 책은 알고리즘 기초에 대해 다룬 이론서입니다. 알고리즘의 기초적이고 전반적인 내용을 학습할 수 있도록 구성했습니다.

www.kyobobook.co.kr

강의: 파이썬으로 배우는 알고리즘 기초(경북대학교 소프트웨어교육센터. 배준현 교수님)