JJM

[Effective C++] 2. 생성자, 소멸자 및 대입 연산자 [2/2]

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 항목 7 : 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 시간 기록을 유지하는 방법은 활용에 따라 무궁무진하다。 그래서인지 TimeKeeper정도의 이름을 가진 클래스를 기본 클래스로 만들어 놓은 후에 적절한 용도에...

[Effective C++] 2. 생성자, 소멸자 및 대입 연산자 [1/2]

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 우리가 만드는 거의 모든 C++ 클래스에 한 개 이상 꼭 들어 있는 것들이 생성자와 소멸자, 대입 연산자이다. 이상할 게 없다. 이들은 C++ 프로그램에 있어서 일용할 양식과 같이 중요한 함수이다. 생성자는 새로운 객체를 메모리에 만드...

[Effective C++] 1. C++에 왔으면 C++의 법을 따릅시다 [2/2]

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 항목 3: 낌새만 보이면 const를 들이대 보자! const의 면모에 대해 생각해 볼 때 정말 멋지다고 말할 수 있는 부분이 있다면 아마도 ‘의미적인 제약’(const 키워드가 붙은 객체는 외부 변경을 불가능하게 한다)을 소스 코드 수준에...

[Effective C++] 1. C++에 왔으면 C++의 법을 따릅시다 [1/2]

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 우리가 어떤 프로그래밍 언어를 어떻게 써왔는지는 상관없다. 어쨌든 중요한 건 C++는 익숙해지는 데 살짝 시간이 필요해 보인다는 거다. 제공하는 기능의 범위만 해도 어마어마한데다가 강력함까지 가지고 있는 C++이지만, 이 언어에서 뿜어져...

인트로 정렬 Introsort

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 인트로 정렬은 평균적으로 빠른 성능을 내면서 최악의 조건에서도 점진적으로 최적화된 성능을 제공하는 하이브리드 정렬 알고리즘이다. 퀵 정렬로 시작한 다음 재귀 깊이가 정렬 대상 요소의 수의 레벨(로그)을 초과할 때 힙 정렬로 전환하며 ...

동적계획법 Dynamic Programming

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 동적 계획법(Dynamic Programming, DP)은 복잡한 문제를 작은 문제들로 나누어 해결한 뒤, 그 결과 값을 저장해두었다가 다시 사용하는 알고리즘 기법이다. 일반적인 재귀 방식은 같은 계산을 다시 반복해야 할 때가 많아 ...

유니온 파인드 (Union-Find) / 분리 집합 (Disjoint Set)

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 유니온 파인드는 이름 그대로 합치기와 찾기라는 두 가지 연산으로 여러 개의 요소들 사이의 관계를 효율적으로 관리하는 자료구조이다. 흔히 서로소 집합 알고리즘이라고도 불린다. 분리 집합 (Disjoint Set) aka 서로소...

0/1 배낭 문제 Knapsack Problem

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 배낭 문제는 조합 최적화의 고전적인 문제로, 한정된 용량의 배낭에 최대의 가치를 갖도록 문제를 담는 방법을 찾는 문제이다. 가령, 도둑이 보석 가게에 침입했는데 보석마다 무게와 가치가 다르고, 배낭의 무게 제한이 10KG라면 어떤...

두 포인터 Two Pointer

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 두 포인터는 리스트에서 두 개의 점의 위치를 기록하면서 처리하는 알고리즘이다. 배열의 부분 배열 중 그 원소들의 합을 구해야 하거나, 배열의 원소들 중에 몇 개의 합이 특정 수가 되는 가짓수를 구할 때 유용하다. 과정 ...

벨만 포드 알고리즘 Bellman Ford

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 벨만 포드 알고리즘은 그래프에서 한 정점에서 다른 모든 정점까지의 최단 경로를 구하는 알고리즘이다. (One To All) 다익스트라 알고리즘과 비슷하지만, 가장 큰 차이점은 가중치가 음수인 간선이 있어도 사용할 수 있다는 점이다...