Programming
-
[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);..
-
[Algorithm] C++ 올바른 괄호(Stack)Programming/Algorithm 2020. 1. 2. 23:56
입력예제 1 (()(()))(() 출력예제 1 NO 입력예제 2 ()()(()()) 출력예제 2 YES #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; int main() { stack s; char a[50]; int i, flag = 1; scanf("%s", &a); for (i = 0; a[i] != '\0'; i++) { if (a[i] == '(') s.push(a[i]); else { if (s.empty()) { printf("NO\n"); flag = 0; break; } else s.pop(); } } if (s.empty() && flag == 1) printf("YES\n"..
-
[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 ..
-
[Algorithm] C++ Ugly Numbers (투포인트 알고리즘)Programming/Algorithm 2020. 1. 2. 15:13
입력예제 1 10 출력예제 1 1500 입력예제 2 1500 출력예제 2 859963392 #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int a[1501]; int main() { int n, i, p2, p3, p5, min = 2147000000; scanf("%d", &n); a[1] = 1; p2 = p3 = p5 = 1; for (i = 2; i