목록내 개인적인 공부/자료구조 (28)
그냥 게임개발자
#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..
우리가 함수에 매개변수를 넣어 매개변수를 사용합니다. 근데 이와 같은 코드는 어떤가요? 값에 의한 호출 #include using namespace std; int add(int a, int b) { a += 10; cout
primitive타입 - byte, short, int, long, float, double, boolean, char reference 타입 - String, struct, class, int[], string[] 등
많이 사용하는 자료구조의 시간복잡도를 정리해보겠습니다. 자료구조 참조 탐색 삽입 삭제 배열 O(1) O(N) O(N) O(N) 스택 O(N) O(N) O(1) O(1) 큐 O(N) O(N) O(1) O(1) 연결리스트 O(N) O(N) O(1) O(1) 맵 O(logN) O(logN) O(logN) O(logN) 여기서 스택과 큐 같은 경우에는 가장 앞에 있는 요소를 참조한다고 하면 O(1)이지만 중간에 있는 요소면 스택과 큐는 순차접근이기에 O(N)이 걸립니다.

operator()는 C++에서 함수 호출 연산자라고 불립니다. 객체를 함수처럼 호출할 수 있게 해주는 연산자 오버로딩이라고 보시면 될 것 같습니다. 이 연산자를 클래스나 구조체에서 오버로딩을 함으로써 해당 타입의 객체에 대한 "호출 가능한 객체" 또는 "함수 객체"를 만들 수 있습니다. 이는 함수 객체나 우선순위 큐 정렬 등에 사용될 수 있습니다. 한마디로 기존에 존재하던 연산자들 있죠? =, ==, >, ++, 이러한 것들을 내가 원하는 다른 기능들로 커스텀 할 수 있다는 이야기입니다. 일단 원형부터 살펴보죠. class ClassName { public: 반환타입 operator()(매개변수) { // 구현 } }; 반환 타입은 함수 호출 시에 반환되는 데이터 타입입니다. 매개변수는 함수가 받아들일..

구조체(struct) 같은 자료구조를 넣어서 우선순위 큐를 만들 수 있습니다. 구조체를 일단 만들어보죠. #include #include using namespace std; struct Point { int y, x; Point(int _y, int _x) : y(_y), x(_x) {} Point() { y = -1; x = -1; } bool operator a.x; } }; int main() { priority_queue pq; for (int i = 1; i