반응형

스티브 잡스는 "모든 사람은 코딩을 배워야 한다"고 하였다. 이 말은 생각/사고하는 방법을 배운다는 뜻이며 이는 다시 말해 절차적 사고를 통해서 문제를 해결해야 한다는 뜻이다.

 

여기서는 알고리즘이란 무엇인지 소개할 것이다. 요약하자면 알고리즘이란 문제를 해결하는 데 사용되는 단계별 절차이다. 알고리즘은 컴퓨터가 빠르든 메모리가 얼마나 많이 확보되든 상관 없이 중요하다. 이에 대해 알고리즘에서 쓰이는 단어의 정의와 함께 이를 자세히 설명해보겠다.


알고리즘이란

컴퓨터 프로그램은 특정 작업(예: 정렬)을 해결하는 개별 모듈로 구성된다. 여기서 중요한 것은 전체 프로그램의 설계가 아니라 특정 작업을 수행하는 개별 모듈의 설계에 있다. 코드의 모듈화 이후 생성되는 것이 각 개별 모듈이다.

 

문제

문제란 이러한 특정 작업이며 우리가 답을 구하는 질문이다. 여기에는 매개변수들이 포함될 수 있다. max(a, b)라는 함수가 있을 때, a, b를 나타낸다.

 

매개변수

문제 설명에서 값이 할당되지 않은 변수이다. max(a, b)라는 함수가 있을 때, a, b에는 아직 값이 할당되지 않았다.

 

문제의 인스턴스

문제를 해결하기 위해 매개변수에 특정한 값을 할당하는 것이다. 문제의 모든 인스턴스를 해결한다는 것은 문제를 해결한다는 것을 뜻한다. max(a, b)라는 함수가 있을 때, a, b에 1, 2 등을 대입하는 것이다. a, b에는 다른 모듈에서의 연산 결과가 들어갈 수 있다.

알고리즘

각 인스턴스에 대한 솔루션을 생성하기 위한 일반적인 단계별 절차이다. max(a, b)라는 함수에서 a, b 각각을 구하는 단계별 절차를 알고리즘이라고 할 수도 수도 있고, max 함수 내부의 흐름도 알고리즘이라고 할 수 있다. 이런 알고리즘들이 있어야 문제를 해결할 수 있다.

 

수도 코드(Pseudo code)

자연 언어에서 구문의 엄격한 규칙 없이 제어와 자료 구조를 설명한 것. 실행될 수는 없으나 실제 컴퓨터 언어와 매우 유사한 언어로 프로그램의 논리를 표현한 것으로, 특정 컴퓨터 언어에 구애받지 않고 간략한 형식으로 작성되어 있어 이후 단계에서 실행될 수 있는 프로그램을 코딩하는 데 쉽게 참조 또는 사용될 수 있다. 따라서 프로그램 내용을 구조적 워크스루(workthru) 등에서 검토하는 데도 매우 유용하다.

수도 코드를 통해 알고리즘을 표현할 수 있다. 그리고 이를 이용해 다양한 언어에서 해당 알고리즘을 구현할 수 있다.

반응형

+ Recent posts