<알고리즘>
- 문제를 해결하기 위한 절차나 방법
- 컴퓨터가 어떤 일을 수행하기 위한 단계적 방법
<알고리즘 표현법>
1. 슈도코드
- 일반적인 언어로 코드를 흉내 내서 알고리즘을 써 놓은 코드.
- 특정 언어로 프로그램을 작성하기 전에 알고리즘을 대략적으로 모델링하는데 쓰임
2. 순서도(Flow chart)
- 진행 흐름을 순서에 따라 기호나 문자로 나타낸 도표
- 흐름도. 데이터 처리 과정을 표현하는데 사용
- 프로그램을 작성하기 전 전체적인 흐름과 과정 파악을 위해 필수적으로 거쳐야 되는 작업
<좋은 알고리즘 이란?>
1. 정확성 : 얼마나 정확하게 동작하는가? 정확성이 높을 수록 좋음
2. 작업량 : 얼마나 적은 연산으로 원하는 결과를 얻어내는가? 적을수록 좋음.
3. 메모리 사용량: 얼마나 적은 메모리를 사용하는가? 적을수록 좋은 알고리즘.
4. 단순성 : 얼마나 단순한가? 단순할수록 좋은 알고리즘
5. 최적성 : 더이상 개선할 여지 없이 최적화 되었는가? 개선의 여지가 없을수록 최적화 된것.
<성능 분석 필요>
해결하기 위해 다양한 알고리즘을 사용할 수 있음.
어떤 알고리즘을 사용하느냐에 따라 해결에 대한 차이가 날 수 있음.
> 그래서 알고리즘 성능 분석 필요.
- 많은 문제에서 알고리즘 성능 분석 기준으로 알고리즘의 작업량을 비교.
ex. 덧셈 99번 vs 3번의 연산(덧셈1 곱셈1 나눗셈 1) = 2번째꺼가 적으니 더 좋음.
=> 더하려는 범위가 커질수록 더 차이날 수 있음.
- 걸리는 시간을 측정하기도 함(환경에 따라 달라짐). 실행되는 명령문의 개수를 계산하기도 함
그래서 후자가 더 자주 사용됨.
* 시간 복잡도, 빅-오(O) 표기법
- 요소 수가 증가함에 따라 각기 다른 시간복잡도의 알고리즘은 아래와 같은 연산 수를 보임

'Python > Data Structure' 카테고리의 다른 글
| Algorithm - 개요1 (11) | 2023.12.05 |
|---|