본문 바로가기
Python/Data Structure

Algorithm - 개요2

by ADELA_J 2023. 12. 14.

<알고리즘>

- 문제를 해결하기 위한 절차나 방법

- 컴퓨터가 어떤 일을 수행하기 위한 단계적 방법

 

<알고리즘 표현법>

1. 슈도코드 

 - 일반적인 언어로 코드를 흉내 내서 알고리즘을 써 놓은 코드.

 - 특정 언어로 프로그램을 작성하기 전에 알고리즘을 대략적으로 모델링하는데 쓰임

 

2. 순서도(Flow chart)

- 진행 흐름을 순서에 따라 기호나 문자로 나타낸 도표

- 흐름도. 데이터 처리 과정을 표현하는데 사용

- 프로그램을 작성하기 전 전체적인 흐름과 과정 파악을 위해 필수적으로 거쳐야 되는 작업

 

<좋은 알고리즘 이란?>

1. 정확성 : 얼마나 정확하게 동작하는가? 정확성이 높을 수록 좋음

2. 작업량 : 얼마나 적은 연산으로 원하는 결과를 얻어내는가? 적을수록 좋음.

3. 메모리 사용량: 얼마나 적은 메모리를 사용하는가? 적을수록 좋은 알고리즘.

4. 단순성 : 얼마나 단순한가? 단순할수록 좋은 알고리즘

5. 최적성 : 더이상 개선할 여지 없이 최적화 되었는가? 개선의 여지가 없을수록 최적화 된것.

 

<성능 분석 필요>

해결하기 위해 다양한 알고리즘을 사용할 수 있음.

어떤 알고리즘을 사용하느냐에 따라 해결에 대한 차이가 날 수 있음. 

> 그래서 알고리즘 성능 분석 필요.

 

- 많은 문제에서 알고리즘 성능 분석 기준으로 알고리즘의 작업량을 비교.

ex. 덧셈 99번 vs 3번의 연산(덧셈1 곱셈1 나눗셈 1) = 2번째꺼가 적으니 더 좋음. 

=> 더하려는 범위가 커질수록 더 차이날 수 있음.

- 걸리는 시간을 측정하기도 함(환경에 따라 달라짐). 실행되는 명령문의 개수를 계산하기도 함

그래서 후자가 더 자주 사용됨.

 

* 시간 복잡도, 빅-오(O) 표기법

 - 요소 수가 증가함에 따라 각기 다른 시간복잡도의 알고리즘은 아래와 같은 연산 수를 보임

http://bigocheatsheet.com

 

 

'Python > Data Structure' 카테고리의 다른 글

Algorithm - 개요1  (11) 2023.12.05