C++(5)
-
[백준] 1003번: 피보나치 함수
#include #include using namespace std; vector dp; pair fibo(int n) { if (n == 0)return dp[0]; if (dp.size() - 1 >= n) return dp[n]; pair mnos_one = { -1,-1 }; pair mnos_two = { -1,-1 }; mnos_one = fibo(n - 1); mnos_two = fibo(n - 2); if (dp.size() == n && mnos_one .first != -1 && mnos_two.first != -1) { dp.push_back(make_pair(mnos_one.first + mnos_two.first, mnos_one.second + mnos_two.second)); ..
2023.05.08 -
이진 탐색
이진 탐색(Binary Search)은 정렬된 배열에서 특정 값을 찾는 알고리즘입니다. 탐색을 시작할 때는 배열의 중간값을 찾아서 찾고자 하는 값과 비교합니다. 만약 찾고자 하는 값이 중간값보다 작으면 중간값 왼쪽 부분 배열에서 탐색을 계속하고, 찾고자 하는 값이 중간값보다 크면 중간값 오른쪽 부분 배열에서 탐색을 계속합니다. 이런 과정을 반복해서 값을 찾아냅니다. 이진 탐색의 시간 복잡도는 O(log n)입니다. 이는 배열의 크기가 2배로 증가할 때마다 한 번씩만 비교하면 되기 때문입니다. 이진 탐색은 배열이 정렬되어 있어야만 사용할 수 있습니다. 아래는 C++로 이진 탐색을 구현한 예시입니다. #include #include #include using namespace std; int binarySe..
2023.04.01 -
연결리스트
연결리스트는 데이터와 다음 데이터의 주소를 가지고 있는 노드들이 연결되어 있는 자료구조입니다. 연결리스트는 데이터를 추가하거나 삭제하기 쉽다는 장점이 있습니다. 연결리스트에는 단일 연결리스트, 이중 연결리스트, 환형 연결리스트 등이 있습니다. 연결리스트를 구현하려면 먼저 노드 구조체를 만들어야 합니다. 노드 구조체는 데이터와 다음 노드를 가리키는 포인터를 멤버로 가지고 있습니다. 예제) 노드를 이용하여 정수형 연결 리스트를 구현하는 예제입니다. #include using namespace std; // 정수형 연결 리스트 노드 클래스 class Node { public: int data; Node *next; }; // 노드 추가 함수 void addNode(Node **head, int data) { ..
2023.04.01 -
동적 할당
정적 할당은 컴파일 시점에 결정되는 고정된 메모리 공간을 사용하는 것이고, 동적 할당은 실행 시점에 필요한 만큼 메모리 공간을 할당하는 것입니다. 동적 할당은 포인터를 사용하여 구현합니다. 동적 할당을 위해서는 malloc() 함수나 new 연산자를 사용합니다. 이 둘은 동일한 기능을 수행하지만, malloc()은 C언어에서, new는 C++에서 사용됩니다. 예시) 사용자가 입력한 크기에 따라 동적으로 배열을 할당하고, 배열에 저장된 값을 출력하는 예제입니다. #include using namespace std; int main() { int n; cout > n; // 동적으로 배열 할당 int *arr = new int[n]; // 사용자 입력값으로 배열 초기화 for (int i = 0; i < n..
2023.04.01 -
정렬 : sort()
sort() 함수는 STL에서 제공하는 알고리즘 중 하나로, 벡터와 같은 컨테이너를 정렬하는데 사용됩니다. 그러나 queue는 내부적으로는 연결리스트 형태로 구현되어 있으므로 sort()를 사용할 수 없습니다. sort() 함수 : C++ algorithm 헤더에 포함 sort(배열의 시작점 주소, 마지막 주소 + 1) #include #include using namespace std; void main(){ int a[] = {9,3,5,4,1,10,8,6,7,2}; sort(a, a + size(a)); for(int obj : a){ cout
2023.03.28