본문 바로가기

대학교/알고리즘

2.1 Recursion에 대한 이해 앞선 내용에서는 Maximum Range Sum을 구하는 함수를 구현하고 거기에서 중복되는 연산부분을 없애는 방식으로 수행 속도를 향상시켰다. 이것을 하는데 있어서는 아무런 사전 지식이 없어도 생각을 해본다면 Live하게 짤 수 있는 알고리즘이었다.이번에는 Recursion이 무엇인지에 대해 살펴보도록 하겠다.Recursion을 한국말로 번역을 하자면 '반복'이라는 뜻을 가지고 있다. 즉 Recursive function은 같은 함수가 반복..
1.2 Maximum Range Sum (2) 앞에서 사용한 알고리즘의 Time Complexity는 $O(n^3)$이었다. 이것을 줄이기 위해서는 불필요한 연산을 줄이는 것이 가장 먼저 할 수 있는 방법이다. 일단 앞의 알고리즘을 이용해서 작성한 소스코드를 다시 살펴보도록 하자. int getMaximumRange1(int *arr, int size){ int max = INT_MIN; for(int i=0; i<size; i++){ for(int j=i; j<size; j..
1.1 Maximum Range Sum (1) Maximum Range Sum이란 길이가 n인 배열을 받아서 구간을 잡아 그 구간에 있는 모든 배열 값을 더해서 그 값이 최대가 되도록 하는 값을 찾도록 하는 문제이다.그냥 바로 생각하면 배열의 모든 값을 더하면 최댓값이 될 수 있다고 생각할 수도 있지만, 이렇게 하려면 배열의 모든 값이 양수라는 조건이 있어야 한다. 즉, 임의의 숫자에 대해서는 이렇게 생각할 수 없다는 것이다.그러면 이 문제를 어떻게 하면 해결 할 수 있을까? 가장 간단한 방법은..