전체 글

[Basic C++] #29_Set, STL 컨테이너 C++ 개발에서 STL 컨테이너에 대해 알아보겠습니다. C++가 제공하는 STL 컨테이너 중 Set과 MultiSet을 살펴보겠습니다. #0. 개념 1. 개념 Set은 STL에서 제공하는 연관 컨테이너입니다. 여느 연관 컨테이너가 그러하듯 노드 기반 컨테이너이며, 균현 이진트리로 구현되어 있습니다. Set은 "Key" 값을 원소로 이루어진 집합입니다. "Key" 값은 중복이 허용되지 않으며, 자동으로 정렬됩니다. 기본 정렬 방식은 오름차순(a Root -> Right)를 통해 정렬된 Key 값들을 순차적으로 탐색합니다. map 컨테이너와 달리, Set에서 "Key"값은 Key 값임과 동시에 ..
[디자인 패턴] #16_공간 분할 패턴, Spatial Partition 게임 디자인 패턴 중 "최적화 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 20 항목, "공간 분할"에 해당하는 내용입니다. Overview 1. 목적 공격 사정 범위 안에 존재하는 객체들을 찾는 등 주변 객체들을 찾는 작업은 월드 내 객체들을 순회합니다. 월드 내 객체의 개수가 많아질수록, 객체들을 전부 순회하는 작업은 성능 저하의 요인이 될 수 있습니다. 월드 내 주변 객체 탐색 성능을 최적화하기 위해 객체의 "위치 값"에 따라 구성되는 자료구조에 각 객체를 저장합니다. 2. 언제 사용할 것인가? 위치 값을 갖는 객체가 많을 때 위치에 따라 객체 탐색 성능에 영향을 줄 때 3. 주의할 점 객체의 개수가 충분히 많을 ..
[Unreal]#21_Custom Delegate Unreal 개발 중 "Custom Delegate"에 대해 알아보겠습니다. 커스텀 대리자 함수 시그니처 생성 방법에 대해 살펴보겠습니다. Custom Delegate Signature 1. 코드 DECLARE_DELEGATE(DELEGATE_NAME); //void __(void) DECLARE_DELEGATE_RetVal_OneParam(DELEGATE_RETURN_TYPE, DELEGATE_NAME, PARAM_1_RETURN_TYPE); Delegate 1. 기본 구조 // Delegate 활용 기본 구조 L1. DECLARE_DELEGATE : Custom Delegate Signature 메크로 생성 L2. Custom Delegate 선언 -..
[디자인 패턴] #15_객체 풀, Object Pooling 게임 디자인 패턴 중 "최적화 패턴"에 대해 알아보겠습니다. "게임 프로그래밍 패턴"의 19 항목, "객체 풀"에 해당하는 내용입니다. 개념 런타임 중 객체의 할당과 해제를 반복하지 않고, 고정 크기 "풀"에 할당된 객체를 재사용함으로써 메모리 사용 성능을 개선합니다! 왜 필요할까? 1. 메모리 단편화, Memory Fragmentation 메모리 단편화란, 힙에 사용 가능한 공간이 여유로운 크기로 뭉쳐 있지 않고, 작게 조각나 있는 상태를 의미합니다 전체적으로 사용 가능한 메모리 공간이 충분함에도 불구하고, 연속해서 사용 가능한 영역은 작을 수 있습니다. 이때, 메모리 단편화 문제 + 할당/해제 속도 -> 게임 성능을 저하시키는 요인들을 방지..
[Unreal]#20_Log Unreal 개발 중 "Debugging"에 대해 알아보겠습니다. 커스텀 로그 클래스를 생성하고 활용하는 방법에 대해 살펴보겠습니다. 로그 1. ELogVerbosity namespace ELogVerbosity { enum Type { NoLogging = 0, Fatal, Error, Warning, Display, Log, Verbose, VeryVerbose, All = VeryVerbose, NumVerbosity, VerbosityMask = 0xf, SetColor = 0x40, BreakOnLog = 0x80, } } 단순히, 로깅 메세지의 컬러를 변경합니다. "Fatal" 타입만 예외적으로, 메세지가 출력되면 Crash가 발생합니다! 2. Custom Log ..
[Programmers 알고리즘, C++]#Level 2_다음 큰 숫자 Programmers 알고리즘 문제 풀이, Level 2_다음 큰 숫자 bitset을 활용한 이진 변환과 cmath 헤더 파일을 활용한 알고리즘 문제 풀이 1. bitset을 활용한 이진법 변환 Convert a Decimal to Binary in C++ | Techie Delight This post will discuss how to convert a decimal to binary in C++... The standard solution to convert a number to its binary format in C++ is using std::bitset. www.techiedelight.com 주어진 입력 값은 최대 1,..
[BOJ 알고리즘, C++] #14889_스타트와 링크, DFS, 깊이 우선 탐색 BOJ 알고리즘 문제 풀이, 14889_스타트와 링크 깊이 우선 탐색을 통해 차이 값이 최소가 되는 두 배열을 구합니다. 문제 풀이 1. 깊이 우선 탐색 알고리즘 활용 [BOJ알고리즘, C++]#15649_N과 M(1), 깊이 우선 탐색 [BOJ 알고리즘, C++] #15649_N과 M(1), 깊이 우선 탐색 BOJ 알고리즘 문제 풀이, 15649_N과 M (1) 깊이 우선 탐색을 통해 중복이 없는 수열의 개수를 구합니다. 문제 풀이 1. 깊이 우선 탐색(DFS) 루트 노드. webddevys.tistory.com 2. 풀이 깊이 우선 탐색을 통해 각 정점(각 선수)을 방문합니다. 더불어, 루트 노드를 시작으로 인접 노드들..
[BOJ 알고리즘, C++] #9663_N-Queen 문제, 백 트래킹 BOJ 알고리즘 문제 풀이, 9663_N-Queen 문제 백 트래킹을 통해 같은 행 혹은 대각선에 Queen이 위치하는지 확인합니다. 문제 풀이 1. 백 트래킹 깊이 우선 탐색을 기반한 알고리즘으로 "후보 해"의 집합에서 "최적해" 집합을 찾아내는 알고리즘입니다. 먼저, 깊이 우선 탐색은 트리 구조를 기반으로 수행되는 알고리즘입니다. 반면, 백 트래킹 알고리즘은 "조건"에 맞지 않는 정점 혹은 브랜치에 대한 "DFS"를 진행하지 않습니다! 정리하자면, "백트래킹 알고리즘 = DFS + 특정 조건"이라고 볼 수 있겠습니다! 2. 백트래킹 알고리즘의 대표 문제, N-Queen 문제 N x N 체스판에서 퀸들이 서로 공격할 수 없도록 배치..
[BOJ 알고리즘, C++] #15649_N과 M(1), 깊이 우선 탐색 BOJ 알고리즘 문제 풀이, 15649_N과 M (1) 깊이 우선 탐색을 통해 중복이 없는 수열의 개수를 구합니다. # 문제 # 풀이 1. 깊이 우선 탐색(DFS) 루트 노드 혹은 임의의 노드에서 시작해서 다음 분기로 넘어가기 전에, 해당 분기를 완벽하게 탐색하는 방법입니다. 2. DFS의 특징 자기 자신을 호출하는 순환 알고리즘의 형태이다. 어떤 노드를 방문했었는지 방문 여부를 반드시 검사해야 합니다. 너비 우선 탐색보다 간단합니다. 검색 속도 자체는 너비 우선 탐색에 비해 느립니다. 3. 예제 0번 노드를 시작으로 깊이 우선 탐색을 시작합니다. 0번과 인접한 노드들을 순차적으로 순회합니다. 0번과 인접한 1번 노드를 방문합니다...
[Basic C++] #22_참조형 변수 C++ 개발에서 까다로운 문법 혹은 특별한 의미를 갖는 부분에 대해 알아보겠습니다. "전문가를 위한 C"의 10 항목, "C++의 까다롭고 유별난 부분들"에 해당하는 내용입니다. 참조형 변수 "참조형 변수"란 다른 변수에 대한 별명입니다. 참조형 변수, 즉 어떠한 변수에 대한 참조형 변수의 수정 사항은 모두 기존 변수에 반영됩니다. 참조형 변수를 어떠한 변수의 주솟값 추출, 혹은 역참조 연산이 자동으로 수행되는 포인터 변수라고 생각하면 됩니다. * 주의 : &는 주소 값을 의미하기도 합니다. 따라서, "자료형 뒤에 오는 &", 즉 참조인지 잘 확인해야 합니다! 1. 예제 코드 // 참조형 변수의 사용 int x = 5; int& xRef1 = x; // 컴파일 에..
Hardii2
개발 블로그