프로그래밍 알고리즘이란
알고리즘
- 알고리즘은 문제를 해결하기 위해 필요한 계산절차나 처리과정의 순서입니다.
일상 속 알고리즘
- 일상 속에서 알고리즘을 찾아보면
- 집에서 회사까지 가는 길
- 최단 거리 계산
- 최단 시간 계산
- 요리하는 방법
- 요리하기 위해 필요한 재료
- 요리하기 위해 필요한 순서
- 물건 구매하기 등이 있습니다.
- 필요한 물건 선택
- 필요한 물건 계산
- 집에서 회사까지 가는 길
- 위와 같은 예시들이 있습니다.
- 프로그래밍에서 알고리즘은 input 값을 통해 output 값을 얻기 위한 계산 과정을 말하는 것으로, 이러한 문제를 해결할 때 정확하고 효율적으로 결과값을 얻기 위해서 알고리즘이 필요합니다.
알고리즘 조건
- 알고리즘은 5가지 조건을 만족해야 합니다.
- 입력 : 외부에서 제공되는 자료가 0개 이상 존재해야합니다.
- 출력 : 최소 1개 이상의 결과를 가져와야 합니다.
- 명확성 : 각 단계는 명확하고 애매함이 없는 명령어로 구성되어야 하고, 모든 과정은 명백하게 실행 가능한 것이어야 합니다.
- 유한성 : 각 단계들을 유한한 횟수로 거친 후, 유한한 시간 내에서 문제를 해결하고 종료해야 합니다.
- 효과성 : 모든 연산들은 유한한 시간 내에서 정확하게 수행할 수 있을 정도로 충분히 단순해야 합니다.
- 이 조건들을 바탕으로 알고리즘은 어떤 입력이 있다면 이 입력에 따라 명령을 명확하게 실행하고, 입력에 따른 결과물을 효과적으로 도출해 낼 수 있다면 알고리즘으로 볼 수 있다는 말이 됩니다.
- 반대로 명령에 애매함이 있거나 유한한 시간 내에서 끝나는 것이 보장되지 않는 경우는 메서드(Method)라고 합니다.
좋은 알고리즘
- 프로그램의 품질은 알고리즘의 좋고, 나쁨에 따라 달렸다고 합니다.
- 좋은 알고리즘과 안 좋은 알고리즘을 나누는 기준이 있다면
- 이해하기 쉬워야 합니다.
- 알고리즘은 가능한 알기 쉬워야 합니다.
복잡하고 난해한 알고리즘을 작성하면 나중에는 본인도 이해하기 어려워 지고, 여러 사람들과 협업 시 다른 사람이 바로 이해할 수 없게 되어 문제가 생길 수 있습니다. - 또한 이러한 알고리즘은 올바른 결과가 나타나는지 검증하기 어렵기 때문에 틀린 부분을 찾기 어렵게 되어 작업 능률이 저하됩니다.
- 알고리즘은 가능한 알기 쉬워야 합니다.
- 속도가 빨라야 합니다.
- 속도가 빠르다는 것은 실행을 한 뒤 그 결과가 나타날 때가지 시간이 짧다는 것을 의미합니다.
결과의 값이 같다면 짧은 시간 안에 올바른 결과를 얻을 수 있는 알고리즘이 더 좋은 알고리즘으로 판단됩니다.
- 속도가 빠르다는 것은 실행을 한 뒤 그 결과가 나타날 때가지 시간이 짧다는 것을 의미합니다.
- 효율적이어야 합니다.
- 다른 말로 프로그램을 실행할 때 사용하는 메모리 영역이 적어야 합니다.
- 대량의 메모리가 필요한 것은 프로그램의 효율이 낮다는 것으로, 비용 면에서 메모리 영역은 적은 것이 더 좋다고 말할 수 있습니다.
- 재사용이 쉬워야 합니다.
- 과거에 작성한 것을 그대로 사용하거나 부분적으로 이용할 수 있다면 새로운 프로그램을 만드는데 필요한 시간을 단축시킬 수 있습니다.
- 이해하기 쉬워야 합니다.
'Algorithm' 카테고리의 다른 글
[Algorithm] - 알고리즘 / 시간복잡도 (Time Complexity) (0) | 2024.03.15 |
---|