Make Unreal REAL.
article thumbnail
DFS로 조합, 순열 만들기

재귀로 조합을 만들 때 핵심은 시작점과 레벨이다. 시작점부터 for문을 돌며 현재 레벨에 하나씩 찍어보고, 다음 시작점과 레벨 + 1을 전달해 탐색을 계속한다. 또한 앞에서 뒷방향으로 진행하며 앞의 내용을 유지해야하므로, 탐색에서 같은 결과 배열을 사용한다. #include #include #include using namespace std; void rCombination(int start, int depth, vector& comb, vector& v) { if (comb.size()

article thumbnail
set, lower_bound(), upper_bound()에 사용자 지정 타입 사용

set 자료구조나 lower_bound(), upper_bound() 함수에 사용자 정의 타입을 사용하기 위해서는 < 연산자를 오버로드 해주어야 한다. 하지만, 각 경우에 따라 오버로드 함수의 시그니처가 다르다. struct Item { int data; // set friend bool operator < (const Item& A, const Item& B) { return A.data < B.data; } // lower_bound friend bool operator < (const Item& left, int right) { return left.data < right; } // upper_bound friend bool operator < (int left, const Item& right) ..

article thumbnail
우선순위 큐 사용시 비교기 정의가 기억나지 않을 때

사용자 정의 자료형을 사용해 우선순위 큐를 사용할 때는 보통 아래와 같이 사용한다. 비교기 클래스를 선언하고, 크기를 비교하는 () 연산자를 오버로딩한다. priority_queue 형식으로 선언한다. #include #include using namespace std; struct Job { int start; int duration; }; class compare { public: bool operator () (const Job& A, const Job& B) { return A.duration > B.duration; } }; void main() { priority_queue prQue; prQue.emplace(Job {0, 4}); prQue.emplace(Job {1, 2}); prQue...

article thumbnail
탐색 시 범위 검사를 좀 더 간단하게 하는 방법

BFS나 DFS 시 범위 검사는 보통 아래와 같이 진행한다. #include #include using namespace std; void main() { vector v {1, 2, 3, 4, 5}; for (int i = -10; i < 10; ++i) if (0

article thumbnail
map에서 키 존재 여부를 확인할 때 주의할 점

map에서 키가 존재하는지 확인하는 방법은 3가지가 있다. 첫 번째 방법은 [] 연산자를 사용하는 것이다. #include #include using namespace std; void main() { map mp; if (mp["Key"] == 0) cout

article thumbnail
1차원 벡터를 2차원 벡터로 변환

Can I convert my 1D vector to a 2D vector faster than this? The question is quite straightforward. After some trials, here is the most efficient code I found: //For the sake of the example, I initialize every entry as zero. vector vector1D(1024... stackoverflow.com copy() 함수를 통해 벡터 내부로 관리되는 배열에 직접 값을 복사하면 된다. #include #include #include using namespace std; void main() { vector v1D = {1, 2, 3, 4,..

검색 태그