[CS] 알고리즘이란?

"What's the algorithm?"

Posted by JacksonJang on March 23, 2024

방통대에서 알고리즘 공부를 더 효율적으로 하기 위해 나름 정리한 정보를 메모할겸 포스팅 하게 되었습니다!
자, 그럼 알고리즘에 대해 알아볼까요?

알고리즘은 주어진 문제를 해결하거나 함수를 계산하기 위해 따라야 할 명령어들을 단계적으로 나열한 것이다.

알고리즘의 특징

  • 입력 : 알고리즘은 0개 이상의 입력을 받을 수 있다. 이 입력은 알고리즘의 처리 대상이 되는 데이터입니다.
  • 출력 : 알고리즘은 1개 이상의 출력을 생성해야 합니다. 이 출력은 문제의 해결 결과나 함수 계산 결과입니다.
  • 유한성 : 각 단계는 유한한 횟수로 실행 혹은 동작 후에 종료되어야 합니다.
  • 명확성 : 명확하고 이해하기 쉬워야 합니다.
  • 효과성 : 각 단계는 기본적인 연산으로 구성되며, 실행 가능해야 합니다.

알고리즘 생성 단계

설계 -> 표현/기술 -> 정확성 검증 -> 효율성 분석

알고리즘의 표현/기술 방법

  • 일상 언어
  • 의사코드(pseudo code)
  • 순서도(flow chart)

대표적인 알고리즘 설계 기법

  • 분할정복(Divide and Conquer)
  • 동적 프로그래밍(Dynamic Programming)
  • 욕심쟁이 알고리즘(Greedy Algorithm)
  • 백트래킹(Backtracking)
  • 분기 한정(Branch and Bound)
  • 재귀 알고리즘(Recursive Algorithm)