방통대에서 알고리즘 공부를 더 효율적으로 하기 위해 나름 정리한 정보를 메모할겸 포스팅 하게 되었습니다!
자, 그럼 알고리즘에 대해 알아볼까요?
알고리즘은 주어진 문제를 해결하거나 함수를 계산하기 위해 따라야 할 명령어들을 단계적으로 나열한 것이다.
알고리즘의 특징
- 입력 : 알고리즘은 0개 이상의 입력을 받을 수 있다. 이 입력은 알고리즘의 처리 대상이 되는 데이터입니다.
- 출력 : 알고리즘은 1개 이상의 출력을 생성해야 합니다. 이 출력은 문제의 해결 결과나 함수 계산 결과입니다.
- 유한성 : 각 단계는 유한한 횟수로 실행 혹은 동작 후에 종료되어야 합니다.
- 명확성 : 명확하고 이해하기 쉬워야 합니다.
- 효과성 : 각 단계는 기본적인 연산으로 구성되며, 실행 가능해야 합니다.
알고리즘 생성 단계
설계 -> 표현/기술 -> 정확성 검증 -> 효율성 분석
알고리즘의 표현/기술 방법
- 일상 언어
- 의사코드(pseudo code)
- 순서도(flow chart)
대표적인 알고리즘 설계 기법
- 분할정복(Divide and Conquer)
- 동적 프로그래밍(Dynamic Programming)
- 욕심쟁이 알고리즘(Greedy Algorithm)
- 백트래킹(Backtracking)
- 분기 한정(Branch and Bound)
- 재귀 알고리즘(Recursive Algorithm)