본문 바로가기

자료구조 & 알고리즘

알고리즘 : 알고리즘이란?

 

개발자로서 원활한 코드를 짜려면, 그리고 코딩테스트를 통과하려면 알고리즘에 대해 알아야 합니다.

하지만 알고리즘이 무엇인가를 물어보면 잘 대답하지 못하는 사람들도 있습니다.

그렇다면, 알고리즘이란 무엇일까요?

 

 

 

 

알고리즘이란?

알고리즘이란, 말 그대로 문제를 푸는 절차나 방법을 의미합니다.

예를들자면, 5-3 이란 수학문제가 있을때,

손가락 5개를 펴서 3개를 접는 과정

뺄셈을 사용해서 푸는 것

이런것들이 알고리즘이라고 할 수 있습니다.

 

그렇다면, 정확한 알고리즘의 조건은 무엇일까요?

 

 

 

 

알고리즘의 조건

1. 입출력의 존재

알고리즘은 문제를 푸는 과정이기 때문에, 문제(입력)와 답(출력)이 반드시 존재해야 합니다.

즉, 입력값이 없이 출력만 하는 것, 입력을 받아도 출력값이 없는것들은 알고리즘이라고 할 수 없습니다.

 

2. 명확성

문제를 푸는 과정은 누구나 알 수 있어야 합니다. 따라서 모든 과정은 명확해야 합니다.

따라서 알고리즘의 모든 과정에는 무작위 난수와 같은 절차가 존재해서는 안됩니다.

 

3. 유한성

문제를 풀기 위한 과정은 반드시 유한해야합니다. 따라서 알고리즘은 유한한 횟수 내에 반드시 답을 출력할 수 있어야 합니다.

예를들어 홀수를 입력하면 n회 내에 답을 출력하지만, 짝수를 입력하면 루프에 걸린다면, 이것은 알고리즘이 아닙니다.

 

4. 효율성

알고리즘을 사용할 때, 어떠한 사람이 사용하더라도, 같은 값이 나와야 합니다.

그러기 위해서는, 알고리즘의 모든 연산들이 명백하게 검증 가능할 수 있어야 합니다.

 

위 4가지 조건이 있어야 알고리즘이라고 할 수 있습니다.