[BOJ 알고리즘, C++] #1269_대칭 차집합, Set BOJ 알고리즘 문제 풀이, 1269_대칭 차집합, Set Set 컨테이너를 통해 두 집합의 대칭 차집합을 구합니다. 문제 풀이 Set을 활용하면 아주 간단하게 풀 수 있는 문제입니다. 두 개의 집합 간 서로 중복되지 않는 원소들의 개수를 구합니다. Set 컨테이너는 항목들 간 중복을 허용하지 않습니다. 이러한 특징을 염두에 두고 풀이합니다. 코드 #include #include #include // find()를 활용하기 위해 헤더를 추가합니다. typedef long long ll; using namespace std; int main() { int N, T; set s; cin >> N >> T; int set1Num = N; int se..
C++
[BOJ 알고리즘, C++] #11478_서로 다른 부분 문자열, Set BOJ 알고리즘 문제 풀이, 11478_서로 다른 부분 문자열 문제 Map 컨테이너를 활용하여 문자열이 갖는 총 부분 문자열을 계산합니다. 문제 풀이 Set 컨테이너를 사용하면 아주 간단하게 풀 수 있는 문제입니다. Set 컨테이너의 특징을 간략하게 설명하자면, 중복이 없는 "Key" 값을 원소로 갖는 자료구조입니다. Map과 달리 Set은 Key 값이 곧 Value이며, 간단하게 풀이하면, 중복 없는 항목들을 갖는 컨테이너로 볼 수 있습니다. 코드 #include #include #include using namespace std; // Set 사용 int main() { string str; set s; cin >> str; s..
[BOJ 알고리즘, C++] #14425_문자열 집합, Map BOJ 알고리즘 문제 풀이, 14425_문자열 집합 문제 Map 컨테이너를 활용하여 집합에 속해있는 문자열을 선별합니다. 문제 풀이 Map 컨테이너 자료구조를 활용하는 아주 간단한 문제입니다. 먼저, map 을 선언하고, 집합 S에 해당하는 문자열을 Key - 간단한 Boolean 변수를 Value로 삽입합니다 다음으로, 주어진 문자열을 Key로 Map 컨테이너에서 탐색을 진행하는 방향으로 구현했습니다. 이때, "operator []" 는 Map에 없는 새로운 "Key"값으로 수행하면 임의의 Value가 삽입되기 때문에, 집합 S의 문자열들은 모두 "true" 변수와 짝지어 놓도록 합니다! 코드 #include #include #include..
[Unreal_C++_DarkSoul]#4_리팩터링, Data Table 로드 함수, static 멤버 함수 Unreal C++ 개발 중 "Static 멤버 함수를 통한 리팩터링"에 대한 내용입니다. 포트폴리오 진행 사항을 기록하기 위한 포스팅입니다. Overview 문제점 해결 #1. 문제점 1. 내용 Unreal Editor에서 작성한 Player의 "Hit(피격)" 그리고 "Death(죽음)" 애니메이션 정보를 담은 데이터 테이블을 C++로 읽어오는 함수를 작성했습니다. 가독성과 성능이 비교적 나쁘지 않았지만, 중복 코드가 많아서 리팩토링을 하기로 결정했습니다. Data Table의 행 이름을 Player의 공격 모드 이름과 일일이 비교하는 여러개의 조건문로 인해 코드 중복이 발생하는 문제를 발경했..
[Unreal_C++_DarkSoul]#3_Custom Structure, Custom Enumeration Unreal C++ 개발 중 "커스텀 구조체 클래스와 커스텀 열거형 클래스"에 대한 내용입니다. 포트폴리오 진행 사항을 기록하기 위한 포스팅입니다. Overview 임의의 Actor 클래스를 생성합니다. Actor 클래스의 헤더 파일에 사용자 정의 구조체 클래스와 열거형 클래스를 작성합니다. 각 타입의 클래스는 Unreal Editor에 Reflection 하기 위해 "USTRUCT()"와 "UENUM()"을 선언합니다. Custom Enum Class 1. Custom_Enums.h // Fill out your copyright notice in the Description page of Pr..
[Unreal_C++_DarkSoul]#2_Custom Log Class Unreal C++ 개발 중 "Custom Log 클래스"에 대한 내용입니다. 포트폴리오 진행 사항을 기록하기 위한 포스팅입니다. Custom Log 1. CustomLog.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" /****************************************************************************** 목적: Debugging을 위해 로그 호출 함수가 위치한 함수 이름과 라인을 출력합니다. */*********..
[Unreal_C++_DarkSoul]#1_Interaface 클래스 Unreal C++ 개발 중 "Interface 클래스"에 대한 내용입니다. 포트폴리오 진행 사항을 기록하기 위한 포스팅입니다. Interface 1. Header File #include "UObject/Interface.h" 2. Definition 3. Why? 두 가지 다른 객체가 공통의 기능을 구현하기 위해 필요한 클래스 다중 상속에 의한 가독성 저하 + 유지 보수성 저하를 방지합니다. 가독성, 유지보수성, 디버깅 효율 상승을 위한 객체지향 프로그래밍 방법 4. How? 새로운 C++ 클래스 생성 -> Unreal Interface 클래스를 부모 클래스로 하위 클래스 생성합니다. "IInterface_Test(임시로 만든 클래..
[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 선언 -..