본문 바로가기
Algorithm

[Algorithm] - 알고리즘이란

by nam_ji 2024. 3. 14.

프로그래밍 알고리즘이란

알고리즘

  • 알고리즘은 문제를 해결하기 위해 필요한 계산절차나 처리과정의 순서입니다.

일상 속 알고리즘

  • 일상 속에서 알고리즘을 찾아보면 
    • 집에서 회사까지 가는 길
      • 최단 거리 계산
      • 최단 시간 계산
    • 요리하는 방법
      • 요리하기 위해 필요한 재료
      • 요리하기 위해 필요한 순서
    • 물건 구매하기 등이 있습니다.
      • 필요한 물건 선택
      • 필요한 물건 계산
  • 위와 같은 예시들이 있습니다.
  • 프로그래밍에서 알고리즘은 input 값을 통해 output 값을 얻기 위한 계산 과정을 말하는 것으로, 이러한 문제를 해결할 때 정확하고 효율적으로 결과값을 얻기 위해서 알고리즘이 필요합니다.

알고리즘 조건

  • 알고리즘은 5가지 조건을 만족해야 합니다.
    1. 입력 : 외부에서 제공되는 자료가 0개 이상 존재해야합니다.
    2. 출력 : 최소 1개 이상의 결과를 가져와야 합니다.
    3. 명확성 : 각 단계는 명확하고 애매함이 없는 명령어로 구성되어야 하고, 모든 과정은 명백하게 실행 가능한 것이어야 합니다.
    4. 유한성 : 각 단계들을 유한한 횟수로 거친 후, 유한한 시간 내에서 문제를 해결하고 종료해야 합니다.
    5. 효과성 : 모든 연산들은 유한한 시간 내에서 정확하게 수행할 수 있을 정도로 충분히 단순해야 합니다.
  • 이 조건들을 바탕으로 알고리즘은 어떤 입력이 있다면 이 입력에 따라 명령을 명확하게 실행하고, 입력에 따른 결과물을 효과적으로 도출해 낼 수 있다면 알고리즘으로 볼 수 있다는 말이 됩니다.
  • 반대로 명령에 애매함이 있거나 유한한 시간 내에서 끝나는 것이 보장되지 않는 경우는 메서드(Method)라고 합니다.

좋은 알고리즘

  • 프로그램의 품질은 알고리즘의 좋고, 나쁨에 따라 달렸다고 합니다.
  • 좋은 알고리즘과 안 좋은 알고리즘을 나누는 기준이 있다면
    1. 이해하기 쉬워야 합니다.
      • 알고리즘은 가능한 알기 쉬워야 합니다.
        복잡하고 난해한 알고리즘을 작성하면 나중에는 본인도 이해하기 어려워 지고, 여러 사람들과 협업 시 다른 사람이 바로 이해할 수 없게 되어 문제가 생길 수 있습니다.
      • 또한 이러한 알고리즘은 올바른 결과가 나타나는지 검증하기 어렵기 때문에 틀린 부분을 찾기 어렵게 되어 작업 능률이 저하됩니다.
    2. 속도가 빨라야 합니다.
      • 속도가 빠르다는 것은 실행을 한 뒤 그 결과가 나타날 때가지 시간이 짧다는 것을 의미합니다.
        결과의 값이 같다면 짧은 시간 안에 올바른 결과를 얻을 수 있는 알고리즘이 더 좋은 알고리즘으로 판단됩니다.
    3. 효율적이어야 합니다.
      • 다른 말로 프로그램을 실행할 때 사용하는 메모리 영역이 적어야 합니다.
      • 대량의 메모리가 필요한 것은 프로그램의 효율이 낮다는 것으로, 비용 면에서 메모리 영역은 적은 것이 더 좋다고 말할 수 있습니다.
    4. 재사용이 쉬워야 합니다.
      • 과거에 작성한 것을 그대로 사용하거나 부분적으로 이용할 수 있다면 새로운 프로그램을 만드는데 필요한 시간을 단축시킬 수 있습니다.

 

'Algorithm' 카테고리의 다른 글

[Algorithm] - 알고리즘 / 시간복잡도 (Time Complexity)  (0) 2024.03.15