소수는 1과 자기 자신을 제외하고는 어떠한 수로도 딱 나눠지지 않는 수를 의미합니다. 위키피디아에서는 다음과 같이 설명합니다 : 자신보다 작은 두 개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수이다. 예를 들어, 5는 1 x 5 또는 5 x 1로 수를 곱한 결과를 적는 유일한 방법이 그 수 자신을 포함하기 때문에 5는 소수이다. 그러나 6은 자신보다 작은 두 숫자(2 × 3)의 곱이므로 소수가 아닌데, 이렇듯 1보다 큰 자연수 중 소수가 아닌 것은 합성수 라고 한다. 1과 그 수 자신 이외의 자연수로는 나눌 수 없는 자연수로 정의하기도 한다. 알고리즘 사이트에서는 소수를 주제로 한 알고리즘 문제가 많이 존재합니다. 이번 포스팅에서는 그 중, 소수를 생성하는 알고리즘에 대해서 알아보도록 하겠습니다. ..
순열 알고리즘, 또는 모든 경우의 수를 계산하는 알고리즘은 개인적으로 직관적으로 생각하는 것만큼 코드로 구현하기는 쉽지 않은 알고리즘이라고 생각합니다. 먼저 순열(Permutation)은 위키피디아에서 다음과 같이 정의하고 있습니다: 수학에서, 순열(Permutation) 또는 치환은 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산이다. 즉, 순열은 정의역과 공역이 같은 일대일 대응이다. n개의 원소의 순서를 뒤섞는 순열의 개수는 n의 계승 n!와 같다. 즉, n 이하의 양의 정수들을 곱한 값이다. 위키에서 서술했듯이, 순서 있는 n개에 대한 모든 경우의 수를 구하는 것은 n!로 굉장히 구하기 쉽습니다. 또한, 이것의 모든 경우의 수를 하나하나 나열하라고 한다고 해도, 손이 조금 아플 뿐 어려운 문..
언리얼 엔진 위에서 언리얼 엔진과 상호작용하려는 코드를 작성하기 위해서는 언리얼에서 제공하는 각종 매크로의 도움을 받을 수 밖에 없습니다. 그 중, UPROPERTY는 멤버 변수( 또는 프로퍼티 ) 앞에서 기술되며, UPROPERTY 내에 프로퍼티 지정자를 나열함으로써, 해당 프로퍼티가 엔진과 에디터의 다양한 부분과 상호작용할 수 있습니다. UPROPERTY UPROPERTY의 역할은 기본적으로 언리얼 리플렉션 시스템에 해당 프로퍼티가 있음을 알리는 것입니다. 예를 들어, 다음과 같이 기술하면 : UPROPERTY() USomeClass* SomeClass; 빌드 시에 UHT(Unreal Header Tool)이 이 매크로를 감지하고 리플렉션 유형에 추가하게 됩니다. 이렇게 언리얼 리플렉션 시스템에 추가..
vector 컨테이너는 C++에서 자주 사용되는 컨테이너로 GeeksforGeeks에서는 다음과 같이 정의되어 있습니다 : 벡터는 요소가 삽입되거나 삭제 될 때 자동으로 크기를 조정할 수 있는 동적 배열과 동일하며 컨테이너에서 자동으로 처리합니다. 벡터 요소는 반복자를 사용하여 액세스하고 통과 할 수 있도록 인접한 저장소에 저장됩니다. 벡터에서는 데이터가 끝에 삽입됩니다. 때때로 배열을 확장 할 필요가있을 수 있기 때문에 마지막에 삽입할 때 시간이 달라질 수 있습니다(differential time). 마지막 요소를 제거하면 크기 조정(resizing)이 발생하지 않으므로 상수 시간이 소요됩니다(또는 상수 시간 복잡도를 가집니다). 시작 또는 중간에 삽입하거나 및 제거하는 것은 선형 시간(linear i..
언리얼 엔진에서는 UI를 구성하기 위한 다양한 프레임워크를 제공하고 있습니다. 구체적인 종류는 제목에 언급한 것과 같이 나열됩니다 : UMG (Unreal Motion Graphic) HUD Slate Framework UI에 대한 정의는 언리얼 엔진 공식 문서에 다음과 같이 기술되어 있습니다 : 유저 인터페이스 는 메뉴와 기타 상호작용형 요소를 말합니다. 이러한 요소는 보통 HUD 와 매우 흡사하게 화면상에 그려지지만, 특정 상황에서는 월드의 표면위에 렌더링되는 게임 월드 자체의 일부가 되기도 합니다. UI 의 가장 명확한 예는 게임 시작시 표시되는 메인 메뉴나, 플레이어가 게임을 일시정지시킬 때 뜨는 메뉴입니다. 그 외에도 플레이 도중 다른 UI 가 표시될 수도 있습니다. 이를 통해 게임 내 캐릭터간..
형식 연역 결과를 직접 확인하는 수단은 소프트웨어 개발 과정에서 정보가 필요한 시점에 따라서 다릅니다. 이번 항목에서는 다음과 같은 3가지 시점에서 형식 연역 정보를 얻는 방법을 살펴보겠습니다 : 코드를 작성 및 수정하는 시점 컴파일 시점 실행시점 코드를 작성 및 수정하는 시점 IDE 편집기 IDE의 코드 편집기 중에는 프로그램 개체(변수, 매개변수, 함수 등) 위에 마우스 커서를 올리면 그 개체의 형식을 표시해 주는 것이 많습니다. 예를 들어, 다음과 같이 코드가 있을 때, const int the Answer= 42; auto x = theAnswer; auto y = &theAnswer; IDE 편집기는 x의 연역된 형식이 int이고 y의 연역된 형식이 const int*임을 표시해 줍니다. IDE..
언리얼에서는 언리얼 오브젝트(UObject)를 상속받은 파생 클래스들에 대한 선택적 클래스 스코프(Optional Class Scope)를 통한 빠른 검색을 지원하는 반복자 기능을 지원합니다. 이러한 기능을 수행하는 반복자는 크게 UObject들에 대한 순회를 지원하는 오브젝트 반복자와 AActor들에 대한 순회를 지원하는 객체 반복자입니다. 이러한 함수를 사용하여 모든 런타임 액터 및 오브젝트들을 검색하거나, 특정 클래스만을 검색할 수 있습니다. 이러한 기능의 제공은 사용자가 스스로 액터의 동적 배열을 유지하고 관리할 필요가 없으며, 단지 액터가 소멸(destroy)될 때 이 액터가 제거되는 것만 기억하면 됩니다. 액터 및 오브젝트 반복자는 항상 사용자의 게임 월드에 여전히 존재하는 모든 액터 및 오브..
decltype은 주어진 이름이나 표현식의 형식(type)을 알려주는 키워드입니다. 대부분의 경우에서 decltype이 사용자가 예측한 그 형식을 말해 주지만, 아주 가끔 예상 밖의 결과를 제공하기도 합니다. 먼저, 대부분의 경우부터 살펴보겠습니다. 템플릿과 auto의 형식 연역(항목 1과 항목 2 참고)에서 일어나는 일과는 달리. decltype은 주어진 이름이나 표현식의 구체적인 형식을 그대로 말해줍니다. const int i = 0; // decltype(i)는 const int bool f(const Widget& w) // decltype(w)는 const Widget& // decltype(f)는 bool(const Widget&) struct Point{ int x, int y; // dec..
- Total
- Today
- Yesterday
- Perforce Stream
- 코드 저작권
- C++
- MSVC C1083
- C7568
- C# 람다식
- C# lambda expression
- c++ 핫 리로드
- P4 Streams
- UE4
- C# 익명함수
- P4 Stream
- game hot reload
- c++ hot reload
- code copyright
- Perforce Streams
- Visual Studio C1083
- Auto
- visual studio hot reload
- 알고리즘
- GoogleTest
- visual studio 핫 리로드
- 언리얼 엔진
- 구간합
- C++ Compile error
- DXGI
- 구글테스트
- 행렬
- 퍼포스 스트림
- 퍼포스 개요
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |