Programming/C++
-
[C++] DFS 깊이우선탐색Programming/C++ 2020. 1. 5. 01:21
깊이우선탐색(DFS)은 기본적으로 모든 노드를 탐색하는 데 루트(root) 노드가 어디에 위치하느냐에 따라 전위 중위 후위로 나누어진다. 이 그림을 기준으로 가장 위에 1번이 루트노드가 되고, 그 아래 2번과 3번은 왼쪽 자식 오른쪽 자식이다. 왼쪽 자식은 (루트노드 * 2) 이고 오른쪽 자식은 (루트노드 * 2 + 1) 로 번호가 지정된다. 전위 순회 전위 순회는 루트노드가 가장 먼저 나오는 순회 방식이다. 기본적으로 DFS는 전위 순회를 가장 많이 사용한다. 순서 : 1 -> 2 -> 4 -> 5 -> 3 -> 6 -> 7 중위 순회 중위 순회는 각 루트노드가 자식노드의 사이에 위치한다. 순서 : 4 -> 2 -> 5 -> 1 -> 6 -> 3 -> 7 후위 순회 후위 순회는 루트노드가 가장 마지막에..
-
[C++] Recursion 재귀함수Programming/C++ 2020. 1. 3. 15:31
/*자연수 찍기*/ #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; void recur(int x) { if (x == 0) return; // return 해버려 else { recur(x - 1); printf("%d ", x); } } int main() { int n; scanf("%d", &n); recur(n); return 0; } /*2진수 찍기*/ #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; void recur(int x) { if (x == 0) return; else { recur(x / 2);..
-
[C++] STACKProgramming/C++ 2020. 1. 2. 16:37
STACK 은 기본적으로 LIFO(LAST IN FIRST OUT) 구조로 된 자료구조이다. LIFO 가 뭐라함은 말 그대로 나중에 들어간 값이 먼저 나오는 형식이다. 1. 먼저 라이브러리를 쓰지않고 직접 구현한 방식이다. 직접 구현을 할 때에 push와 pop 함수를 따로 만들어 구현한다. /* 라이브러리 없이 STACK 직접 구현*/ #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int stack[100], top = -1; void push(int x) { stack[++top] = x; } int pop() { return stack[top--]; } int main() { int n, k; char ..
-
[C++] VectorProgramming/C++ 2019. 12. 23. 11:51
기본 사용 #include 헤더 추가 초기화 방법 메모리 할당 미리 해놓은 경우와 안한 경우 #include #include using namespace std; int main() { int n = 10, i, tmp; // 메모리 할당 안한 경우 vector a; for(i = 0; i < n; i++) { scanf("%d", &tmp); a.push_back(tmp); // 할당 안된 경우 push_back으로 뒤로 데이터를 집어넣음 } // 메모리 할당 해놓은 경우 vector a(n); for(i = 0; i < n; i++) { scanf("%d, &a[i]); // iterator 반복자를 사용하지 않고 직접 메모리에 접근! } } Latest Update : 19.12.23