목록2024/04/15 (4)
그냥 게임개발자
#include using namespace std; int number; void solve(int n) { int sum = 0, i = n; while (i > 0) { sum += i; i /= 2; } cout number; solve(number); return 0; } 이것을 보면 시간복잡도만 결론으로 이야기하면 O(logN)입니다. log는 알 거라고 생각하고 이야기 할게요. 만약 number가 32라고 칩시다. 그러면 solve에서 더해주는 게 32 + 16 + 8 + 4 + 2 + 1입니다. 그러면 총 5번을 하게 되죠? 그러면 이 log를 써봅시다. 밑이 2인 log2(32)는? 5죠 지수는 32인거구요. 그래서 log2(N)인데 상수또한 빼주어서 총 시간 복잡도는 logN이 되는겁니..
#include using namespace std; int arr[100]; int cnt; int SumAdd(int l, int r) { cnt++; if (l == r) return arr[l]; int mid = (l + r) / 2; int sum = SumAdd(l, mid) + SumAdd(mid + 1, r); return sum; } void main() { int number; cin >> number; for (int i = 0; i < number; ++i) { arr[i] = i + 1; } int sum = SumAdd(0, number - 1); cout
Array요소 수정할 때 크기를 정하지 않은 int arr[], 또는 배열의크기인 int arr[3], 배열의 포인터인 int* arr를 넘겨서 수정이 가능하다. #include using namespace std; int arr[3] = { 1, 2, 3 }; void Check1(int a[]) { a[2] = 100; } void Check2(int a[3]) { a[2] = 1000; } void Check3(int* a) { a[2] = 10000; } int main() { Check1(arr); cout
재귀함수란 3가지 특징을 가집니다. 재귀함수(Recursion)는 정의 단계에서 자신을 재참조하는 함수 전달되는 상태인 매개변수가 달라질 뿐 똑같은 일을 하는 함수 큰 문제를 작은 부분문제로 나누어서 풀 때 사용합니다. 예를 들어 팩토리얼(factorial)이 있습니다. 팩토리얼(factorial)은 1부터 해당 항까지 곱하는 함수입니다. 이를 재귀함수로 구현하면 다음과 같습니다. 근데 이거 고등학교인가 중학교인가 그 때 배웠던 것 같은데요. 코드로 활용해봅시다. #include using namespace std; // 재귀함수 int FactRec(int n) { if (n == 1 || n == 0) return 1; return n * fact_rec(n - 1); } int FactFor(int..