알고리즘 3

[알고리즘] 알고리즘 성능표시

빅오 표기법 ( Big-Oh Notation ) : O( f(n) ) 형태로 표기 위의 그림과 같은 알고리즘에서 알고리즘 1은 O(n), 알고리즘 2는 O(1)으로 표시 됩니다. 빅-오 표기법에서는 가장 높은 항만 표기하고 계수는 생략 합니다. 예를 들어 (5n2 + n + 100 ) 를 O(n2)으로 표기 합니다. 빅-오 표기법은 정확한 연산 횟수가 아닌 대략적인 시간을 측정하기 위한 방법입니다. 대표 함수로는 O(1), O(log n), O(n log n), O(n2), O(n3), O(2n) 등이 있습니다. O(2n) 의 경우 데이터 갯수가 몇개 증가하지 않아도 시간이 기하급수적으로 증가합니다. 예를 들어 정렬 알고리즘의 시간복잡도를 보면 버블정렬은 O(n2), 퀵 정렬은 O(n log n)로 퀵정..

[알고리즘] 알고리즘의 성능

하나의 문제에 상황에 따른 수십가지의 해결 알고리즘이 존재 합니다. Ex. 1 부터 100 까지의 합을 구하는 방법 → 알고리즘 1 : 1 + 2 + 3 + ··· + 98 + 99 + 100 → 알고리즘 2 : ( 1 + 100 ) * 100 / 2 만일 100까지의 합이 아니라 100,000까지의 합이라면 각각의 알고리즘으로 값을 구하는데 걸리는 시간은 많은 차이가 있을 것입니다. 알고리즘 2가 데이터 갯수가 커지더라도 수행시간이 덜 걸리기 때문에 좋은 알고리즘 입니다. 이런 분석방법을 시간복잡도 ( Time Complexity ) 라고 합니다.

문제에 대한 논리적 판단력을 기르려면?

문제에 대한 논리적 판단력을 기르기 위한 공부 또는 연습으로는 해당 문제에 대한 순서도를 그려보는 것을 추천한다. 그러다 보면 머리속으로 생각했을때 보이지 않던 문제들이 보이기 시작한다. 조금 더 논리적으로 생각을 정리해 보고 싶다면, 퍼즐을 풀듯이 자료구조를 공부해 보기를 권한다. 자료구조의 알고리즘을 살펴보다 보면 조금 더 문제를 논리적으로 접근 하는 것이 가능해 질 것이다. # 자료구조(Data Structure) - 컴퓨터 프로그래밍 언어에서 효율적인 자료(Data) 형태 - 많은량의 정보를 저장하고 처리하기 위한 효율적인 자료 정리 - 자료에 효율적으로 접근하고 수정할 수 있도록 자료를 수정/관리/ 저장하는 것 # 알고리즘(Algorithm) - 어떤 문제를 해결하기 위해 정해진 일련의 단계적인..