목록Programming Language/c, c++ (12)
이야기박스
c++ 03- STL ; Standard Template Libarary: - namespace: user define scope by Name - RTTI: 타입을 알아내는 것. typeid() 등 - dynamic_cast , static_cast , reinterpret_cast , const_cast - bool type: 이 때, 등장. c++ 11- for 문 변형: for (auto a : list) - nullptr: NULL 과 다르니 조심히 사용한다. - final 선언: 이것이 마지막이다. - Explict override: virtual 함수를 사용할 때, 도움을 준다고 한다.안써봐서 모름 - extern template: 템플릿도 extern으로 선언할 수 있게 되었다. - lam..
재귀를 배우기 시작하면, 모두들 해보셨을 예제로 피보나치 수열이 있죠.대부분 수업시간에서는 그렇게 크지 않은 숫자를 예제로 돌렸을 것이라 생각합니다. 근데 숫자가 커지게 된다면, 재귀를 무지막지하게 해서 TLE (Time limited exceeded)가 생기겠죠? 그렇기 때문에 동적 계획법을 통하여 코딩을 합니다. 개요- 배열 or 리스트를 생성하여 이전 피보나치 값들을 저장합니다.- 이 데이터 구조를 이용하여 재귀의 숫자를 획기적으로 줄여봅니다. ==> 이러한 기법을 Memoization 기법이라 합니다. (DP의 핵심 기술) 코드 #include using namespace std; #define SIZE 1000 long long save[SIZE] = { 0, 1, 1, }; long long ..
안녕하세요. 오늘은 프로세스 생성과 임계구역 사용법을 다루어 볼려고 합니다. 저는 비주얼 스튜디오를 사용하고 있기 때문에, fork() 함수가 아닌 CreateThread() 함수를 이용하여 프로세스를 생성할 것입니다. * windows.h 헤더 내용을 다루고 있어요 공유 변수 cnt 가 어떻게 다루어지는지 살펴 보도록 하겠습니다. - 코드 #include #include using namespace std; #define MAX 100000 volatile int cnt; CRITICAL_SECTION cs; DWORD WINAPI ThreadFunc(LPVOID lpParam) { for (int i = 0; i < MAX; ++i) { ++cnt; } return 0; } DWORD WINAPI T..
Splay Tree 코드 게시글입니다. 지난번에 포스팅했던, AVL 트리 코드를 거의 그대로 가져다 썼습니다. ㅎㅎ 그래서 쓰지 않는 메서드들도 꽤 있네요 ㅎㅎ ㅜㅜ 정리가 좀 안된 감이 있지만, 코드 자체가 쉬우니 금방 이해하실 수 있을겁니다. 코드 - main.cpp #include "Splay.h" #include #include #define NUM 6 int main() { srand((unsigned int)time(nullptr)); cout rightc; while (!isExternal(tmp)) { tmp = tmp->leftc; } return tmp; } // 깊이를 반환 int Splay::depth(Node *now) { int ret = 0; while (!isRoot(now)..
알고리즘 카테고리의 AVL 트리 게시글의 내용으로 코드 작성하였습니다. 최대한 트리 모양으로 출력하려고 했는데, UI 프로그램을 쓰지않고 콘솔로 하려니 어렵군요.좀 비슷하게 흉내내 봤는데, 조금만 트리가 커지면 깨집니다.그러니까 크게 믿지말고 참고만 하고 쓰세요. ( 트리 모양 출력 부분 ) 출력을 제외한 AVL 트리 로직은 맞을 거에요 (아마 ㅎㅎ) 코드 - AVL.h #pragma once #include #include #include #include using namespace std; // 노드 정보 typedef struct Node { Node *parent = nullptr; Node *leftc = nullptr; Node *rightc = nullptr; int data = NULL; ..
안녕하세요~ 알고리즘 탐색 부분으로 넘어왔습니다. 알고리즘 게시판에서 이진 검색을 포스팅 했는데요 이건 트리 ADT를 이용하여 검색하는 코드를 작성하였습니다. ○ 코드 특징 - 중복을 허용하지 않음 - 이진 트리 형식 - 완전 이진트리는 아닙니다. - 모듈화가 잘되어 있지 않습니다. (대충대충.. 멘붕상태로 함.. ) ○ 코드 - BinaryTree.h #pragma once #include using namespace std; class BinaryTree { BinaryTree *leftc; BinaryTree *rightc; int data; public: BinaryTree(); BinaryTree(int elem); void setChild(BinaryTree *child); int getDat..
안녕하세요 !! 오늘은 정렬 알고리즘들을 많이 모아 정리해놨습니다 ㅎㅎ 목적은 각 알고리즘들이 수행시간 실험을 하기 위해서였습니다. 구성은 다음과 같습니다. ○ 일반 - 버블 정렬 (Bubble Sort) ○ 우선순위 큐 (Priority Queue) - 선택 정렬 (Selection Sort) - 삽입 정렬 (Insertion Sort) - 힙 정렬 (Heap Sort) ○ 분할 통치 기법 - 합병 정렬 (Merge Sort) - 퀵 정렬 (Quick Sort) ○ 기타 메소드 - checkTime() : 시간 측정 해줍니다 - swap() : 다들 아시죠? - print() : 리스트를 출력합니다 시험들이 끝나고 심심해서 막 달렸네요 ㅋㅋ 작년 이맘때 열심히 공부했었는데, 오랜만에 작성하려고 하니 책..
자바로 하노이의 탑 UI를 만들었죠. 이제 그 근본이 된 코드. c로 짠 코드를 올리도록 하겠습니다. 이중재귀를 이용한 하노이의 탑입니다! #include <stdio.h> void move(int n, char from, char to) { // n번째 블록을 from에서 to로 옮겨라 printf("%dth %c %c\n", n, from, to); } int hanoi(int n,char from, char other, char to) { //printf("Checker >> n : %d, from : %c , other : %c, to : %c\n", n, from, other, to); if (n == 1) { move(n, from, to); return 0; } hanoi(n - 1,..