분류 전체보기

모든 노드의 차수가 2 이하인 트리 수학적으로, 이진트리의 구성에 관한 이론을 정리하기 쉽고, 컴퓨터 내부에서 구현하기도 효율적임 모든 노드가 2개 이하의 자식 노드를 가지므로, 일반성을 잃지 않고 '오른쪽', '왼쪽'이라는 방향 개념을 부여 가능 오른쪽 노드, 왼쪽 노드의 개념적 접근도 있음 포화 이진 트리 이진 트리의 각 레벨에서 허용되는 최대 개수 노드를 가지는 트리 완전 이진 트리 높이가 k인 이진 트리가 '0레벨'부터 'k-2 레벨'까지 다 채우고, 마지막 'k-1 레벨'에서 왼쪽부터 오른쪽으로 노드들이 차례로 채워진 이진트리 이진트리 구현 1. 배열을 이용한 구현 - 트리가 완전 이진 트리 또는 포화 이진 트리인 경우 낭비되는 공간이 없어 효율적 트리가 깊어질수록 기억장소 낭비가 2의 거듭제곱..
예제 Person : Name(이름), Year(연차) - Student : Id(학번) - Teacher : Id(사번) Person에는 DoLesson이라는 가상 함수가 있음 - Student의 DoLesson은 수업을 듣는 행동 - Teacher의 DoLesson은 수업을 가르치는 행동 Object 항상 ~.generated.h 헤더가 마지막에 위치해야 한다. 원래 헤더가 마지막 GameInstance 원래 헤더가 항상 위에 위치 GameInstance // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Engine/GameI..
프로그램이 실행시간에 자기 자신을 조사하는 기능, 언리얼 테크놀로지의 기본 리플렉션을 가질 수 있는 오브젝트는 열거형 UENUM(), 클래스 UCLASS(), 구조체 USTRUCT(), 함수 UFUNCTION(), 멤버 변수 UPROPERTY() 오브젝트가 리플렉션을 가지면 디테일 패널, 직렬화, 가비지 콜렉션, 네트워크 리플리케이션, 블루프린트 등 언리얼 엔진의 유용한 시스템에서 사용 가능하다. 리플렉션을 가지게 하려면 오브젝트가 포함된 C++ 클래스 헤더 파일에 "모듈명".generated.h 헤더를 포함해야 한다. 해당 헤더를 가져야 리플렉션이 있는 시스템에서 해당 클래스를 고려해야 하고 시스템 구현이 필요함을 언리얼 헤더 툴 UHT에 알린다. 모든 언리얼 오브젝트는 클래스 정보와 함께한다. 클래스..
게임 프로그래밍의 특수성 - 사용자 : 쾌적한 경험을 위해 단일 컴퓨터에서 최대 성능을 뽑아내야 한다 - 개발자 : 게임의 규모가 커질수록 방대하고 복잡한 기능을 안정적으로 관리해야 한다 C++ : 안정성 < 성능 / 메모리 직접 제어 / 캐시 활용 극대화 / 저수준 API의 직접 호출 / 복사 작업 최소화 객체 지향 설계 원칙(SOLID) - 유지보수와 유연함, 확장성 향상을 위한 객체지향 프로그래밍 - 하나의 클래스는 하나의 책임만 가져야 한다 - 클래스 설계는 변경하지 않고 동작을 확장할 수 있어야 한다 - 자식 클래스는 부모 클래스를 대체 사용할 수 있어야 한다 - 작고 명확한 인터페이스들로 분리해 관리해야 한다 - 구현을 배제시킨 상위 정책을 바라보며 설계해야 한다 👉 게임 규모가 대형화되면서 ..
게임 제작의 특성 데이터의 정보가 명확해야 함 단일 컴퓨터에서 최대 퍼포먼스를 뽑아내야 함 네트워크 상에서 데이터 통신이 효율적이고 안정적이어야 함 C++에서 int는 최소 32비트를 보장하도록 규약되어 있음 특정 플랫폼에서는 64비트로 해석될 수 있음 따라서 데이터를 저장할 때 int 타입의 크기 확신 불가 👉 데이터 타입의 애매모호함은 게임 개발시 문제 발생 가능 후발언어 C#의 경우, int 타입이 있지만, 4바이트인 int32로 명확히 정의되어 있음 언리얼은 int를 사용하지 않고 int32 사용 언리얼 엔진의 타입과 크기 bool 타입 - 크기가 명확하지 않음 - bit filed 오퍼레이터를 사용하여 데이터 크기를 제한시킬 수 있다. - bool 타입을 저장할 때, 바이트 타입인 unit8로 ..
이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해 강의 정리 1. GameInstance 상속받기 2. 에디터 설정 변경 헤더 파일 UCLASS() class HELLOUNREAL_API UMyGameInstance : public UGameInstance { GENERATED_BODY() public: virtual void Init() override; // 선언 후 alt + enter를 하여, 정의를 자동으로 삽입해준다 }; 소스 파일 void UMyGameInstance::Init() { Super::Init(); UE_LOG(LogTemp, Log, TEXT("%s"), TEXT("Hello Unreal")); } • Super::Init() 부모 클래스에 있는 Init() 함수 ..
에디터 활성화 상태에서 빌드시 발생 메세지 헤더 파일에 변경 발생시 👉 에디터 종료 후 vs에서 컴파일소스 파일에서만 변경 발생시 👉 라이브 코딩으로 컴파일 (ctrl + alt + F11) VS에서 수동으로 클래스 추가 금지 빌드를 눌러서 성공 여부 확인vs 수정이 완료된 뒤, ctrl + f5(디버깅하지 않고 실행)를 하면 닫혀있던 에디터(언리얼) 실행 가능
🟩 알고리즘의 수행 과정에서 자기 자신의 알고리즘을 다시 수행하는 형태 반복문을 사용하는 코드는 항상 재귀함수를 통해 구현하는 것이 가능하며, 그 반대도 가능하다. 재귀 함수를 작성할 때는 함수 내에서 다시 자기 자신을 호출한 후 그 함수가 끝날 때까지 함수 호출 이후의 명령문이 수행되지 않는다는 사실과 종료조건이 꼭 포함 되어야한다는 부분을 인지하고 작성하면 무한루프를 방지 가능 🟩 for, while문 등 반복문과 비교하면 처리에 시간이 오래 걸리고 메모리 소모를 많이 한다. 스마트하게 프로그램을 작성할 수 있을 때만 사용해야 하는 기법 🌟 예1. 카운트다운 🌟 예2. 구구단 출력 🌟 예3. 팩토리얼 #include int factorial(int n) { printf("factorial(%d)가 호..
분할한 문제의 답을 기억해 두고, 이를 재사용함으로써 같은 문제를 여러 번 푸는 낭비를 방지한다는 프로그래밍 기법상향식 접근방법 🟩 특징각 소문제는 원래 주어진 문제와 동일한 문제 👉 입력 크기만 작아진 문제소문제들은 서로 독립일 필요없다.해를  구축하는데 테이블을 사용한다. 최솟값/최댓값을 구하는 최적화 문제에 주로 사용"최적성의 원리"를 반드시 만족하는 문제에만 적용 가능하다.주어진 문제에 대한 최적해는 주어진 문제의 소문제에 대한 최적해로 구성된다. 🟩 처리 과정1. 최적성의 원리가 주어진 문제에 성립하는 지  확인2. 주어진 문제에 대해서 최적해를 제공한느 점화식 도출3. 가장 작은 소문제부터 점화식의 해를 구한 뒤 이를 테이블에 저장4. 테이블에 저장된 소문제의 해를 이용하여 점차적으로 입..
🟩 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법 주어진 문제의 입력을 더 이상 나눌 수 없을 때까지 2개 이상의 작은 문제들로 순환적으로 분할하고, 이렇게 분할된 작은 문제들을 각각 해결한 후, 이들의 해를 결합하여 원래 문제의 해를 구하는 방식 🟩 분할된 작은 문제는 원래 문제와 동일하다. 입력의 크기만 작아진다. 🟩 분할된 문제는 서로 독립적이다. 순환적인 분할 및 결과 결합이 가능하다. 🚀 활용1 정렬 : 합병정렬, 퀵정렬 🚀 활용2 탐색 : 이진탐색
🟩 매 순간에서 지금 이 순간 당장 최선의 답을 선택해 적합한 결과를 도출하자! = 간단하면서 효율적인 알고리즘을 만들 수 있는 강력한 기법 최솟값/최댓값을 구하는 최적화 문제에 주로 사용 각 단계마다 선책한 최적의 해가 전체적인 최적의 해가 되지 않을 수 있다! 🚀 활용1 거스름돈 문제, 배낭 문제 배낭 문제 #include // 배낭의 최대 무게 #define KNAP_MAX 6 // 물건의 종류 #define ITEM_NUM 5 // 물건의 명칭 char name[] = { 'A', 'B', 'C', 'D', 'E' }; // 물건의 무게 int weight[] = { 1, 2, 3, 4, 5 }; // 물건의 가치 int value[] = { 100, 300, 350, 500, 650 }; // ..
자연수 N이 입력되면 1부터 N까지의 소수의 개수를 출력하는 프로그램을 작성하세요. 만약 20이 입력되면 1부터 20까지의 소수는 2 3 5 7 11 13 17 19로 총 8개 입니다. 제한시간은 1초입니다. 입력 20 출력 8 1트 (성공) 데이터가 크면 제한시간에 맞추지 못한다. #include using namespace std; bool isPrime(int x){ bool isPrime = true; for(int i = 2; i > n; for(int i = 2; i
peewoong
'분류 전체보기' 카테고리의 글 목록 (11 Page)