목록Programming Language (59)
이야기박스
Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 lazyloading의 동작 시점 확인 필요 Item 2. 생성자에 매개변수가 많다면 빌더를 고려하라 Item 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 serialize --> desreizlize ==> 오브젝트가 달라짐 enum --> 오브젝트의 싱글톤 유지할 수 있음 transient 형태 ==> serialize 안되게 하는 것 (volitile 과 같은 키워드 --> 사용 자주 할 것 같음. 분산처리 같은 경우) Item 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 Item 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 Item 6. 불필요한 객체 생성을 피하라 Item 7. 다 쓴 객체 ..
개요일주일에 1시간 / 9 items 진행
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 ..
Join 함수는 쓰레드의 종료를 기다려 주는 함수입니다. 비주얼 스튜디오 API 에서 제공되는 WaitForSingleObject이나 WaitForMultipleObjects 과 같은 역할을 합니다.
안녕하세요. 오늘은 프로세스 생성과 임계구역 사용법을 다루어 볼려고 합니다. 저는 비주얼 스튜디오를 사용하고 있기 때문에, 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; ..