til 93

[C++] 우선순위 큐

순서큐란?우선순위 큐란?우선순위 큐 구현방법힙이란?힙의 특징과 종류큐란?큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out)형식의 자료구조우선순위 큐란?우선순위 큐(Priority Queue)는 먼저 들어오는 데이터가 아닌, 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조일반적으로 힙(Heap)을 이용하여 구현함우선순위 큐 구현방법 힙이란? 힙은 우선순위 큐를 위해 고안된 완전 이진 트리 형태의 자료구조여러 개의 값 중 최댓값 또는 최솟값을 찾아내는 연산이 빠름힙의 특징과 종류힙의 특징완전 이진 트리 형태로 이루어져있음부모 노드와 서브 트리간 대소 관계가 성립됨.(반정렬 상태)이진 탐색 트리와 달리 중복된 값이 허용됨힙의 종류최대 힙: 부모 노드의 키 값..

CS/자료구조 2025.07.24

[C++]생성 패턴/팩토리 패턴

순서팩토리 팩턴이란?팩토리 패턴의 장점과 단점팩토리 패턴 사용시 고려사항간단한 팩토리 패턴 작성팩토리 팩턴이란?객체 생성을 공장(Factory)화 시킨 클래스에 캡슐화 처리하여 대신 생성하게 하는 생성 디자인 패턴클라이언트 코드가 직접 new 연산자를 사용하지 않고, 팩토리 메서드나 클래스를 통해 객체를 생성하게하여, 객체 생성의 책임을 분리시킴팩토리 패턴의 사용 예다양한 종류의 몬스터/아이템을 사용할 때조건에 따라 다른 객체를 생성해야 할 때생성 로직이 복잡하고 자주 변경될 때팩토리 패턴의 장점과 단점장점객체 생성 캡슐화: 객체 생성 로직을 클라이언트 코드로부터 분리하여 유지보수가 쉬워짐유연성 증가: 새로운 클래스나 로직이 추가되어도 기존 코드를 거의 수정하지 않고 확장 가능함의존성 감소: 구체적인 클..

C++/디자인패턴 2025.07.23

[C++]Rvalue/Lvalue

순서Rvalue란?Lvalue란?Rvalue와 Lvalue의 차이Rvalue란?기존 C에서 rvalue는 right value 즉 대입연산자를 기준으로 오른쪽 값메모리 주소가 없는 일시적으로 계산된 결과 또는 임시 값임 => 지금만 잠깐 사용하는 값예를 들어 int a = 5; 에서 rvalue는 5이다.Lvalue란?기존 C에서 rvalue는 left value 즉 대입연산자를 기준으로 왼쪽 값객체를 참조하는 표현식으로 특정 메모리의 위치를 가지고 있고 주소도 가질 수 있는 존재하는 값예를 들어 int a = 5;에서 lvalue는 a이다.Rvalue와 Lvalue의 차이lvalue와 rvalue를 구분하는 이유이동생성자 / 이동 대입 연산자함수 오버로딩 시 구분 가능

C++ 2025.07.22

[자료구조]AVL트리

순서트리란?트리에 사용되는 용어AVL트리란?레드-블랙트리란?이진탐색트리(BST)레드-블랙트리와 AVL트리 비교AVL트리가 STL 컨테이너로부터 간택받을 수 없는 이유트리란?트리란 계층적인 자료구조이다.하나의 루트(root)노드에서 시작하여 자식 노드로 나눠짐그래프의 한 종류지만 사이클이 없는 형태트리의 용도계층적 데이터 표현탐색 및 정렬우선순위 큐(힙)파싱 등 트리에 사용되는 용어루트 노드: 트리의 가장 위에 있는 노드를 뜻함리프 노드: 자식이 없는 노드부모/자식: 연결된 두 노드의 관계를 뜻함서브트리: 트리의 일부로서 하나의 노드와 그 하위 노드들높이: 루트에서 가장 깊은 리프까지의 거리AVL트리란?각 노드의 왼쪽, 오른쪽 서브트리 높이 차이가 1 이하가 되도록 자동으로 균형을 유지하는 이진 탐색 ..

CS/자료구조 2025.07.21

[Unreal Engine] Unreal Engine_C++ 매크로

순서Unreal C++ 매크로란?주요 매크로Unreal C++ 매크로란?언리얼 엔진의 헤더 툴(UHT)이 처리하는 특별한 주석/메타데이터.C++ 코드에 리플렉션(reflection) 정보를 추가하여 기능에디터에 속성을 노출블루프린트와 상호작용GC(Garbage Collection)대상 객체로 관리 가능컴파일 전에 UHT가 읽어들여 자동 코드 생성 및 메타데이터 등록주요 매크로클래스 관련 UCLASS(): 언리얼이 이 클래스를 관리하도록 표시USTRUCT(): 언리얼에 구조체 등록UENUM(): 언리얼에 열거형 등록UINTERFACE(): 언리얼 인터페이스 클래스 등록GENERATED_BODY(): 헤더 툴이 가상 함수 테이블, 리플렉션 데이터, 직렬화 함수 등을 자동 생성변수 관련UPROPERTY(): ..

Unreal Engine 2025.07.16

[C++] 시프트 연산자

순서시프트 연산자란?산술 시프트란?논리 시프트란?산술 시프트와 논리 시프트 차이보수법시프트 연산자란?시프트라는 말 그대로 이동을 시키는 것을 의미한다. 산술 시프트(>) 또는 논리 시프트 >>>를 이용함시프트 연산자는 10진수를 2진수로 표현한 값을 이동시킨다. 즉, 비트를 이동시키는 연산자시프트 연산자는 피연산자가 2개인 2항 연산자이다.시프트 연산자는 2진수로 표현된 비트를 해당하는 방향으로 이동시키는 연산자이다.산술 시프트란?숫자의 부호 비트는 유지하면서 나머지 비트를 왼쪽 또는 오른쪽으로 이동하는 연산자.산술 시프트에 대한 예시1byte 즉 8bit를 기준으로 비트로 표현한다면 10진수 정수 10을 2진수로 변환하면 [0 0 0 0 1 0 1 0]임. => 시프트 ' [0 0 0 0 1 0 1 0..

C++ 2025.07.15

[C++] is-a/has-a 관계

순서is-a 관계has-a 관계is-a 관계와 has-a 관계의 차이점is-a 관계is-a는 'A는 B이다'일 때 '~이다'와 같다.추상화(형식이나 클래스와 같은)들 사이의 포함 관계를 의미함. 클래스 A가 다른 클래스B의 파생클래스임을 뜻함.타입 A는 타입 B의 명세를 암시하여 타입B의 서브타입이라고 할 수 있음is-a관계를 통해 생성된 클래스 및 객체는 상속 관계에서 둘은 밀접하게 결합됨. => 부모 또는 기저 클래스의 명세에 변경이 발생하면 코드가 손상도리 위험이 있음.has-a 관계has-a는 "A가 B를 가지고 있다"라는 관계이다.구성 관계를 의미하며 한 오브젝트가 다른 오브젝트에 "속한다"를 말함.한 클래스가 다른 클래스의 객체를 멤버 변수로 포함하는 관계has-a 방식으로 생성된 클래스 및 ..

C++ 2025.07.14

[C++] 행동 패턴/전략, 스트래티지 패턴(Strategy Pattern)

순서전략패턴이란?장점단점전략패턴이란?알고리즘을 캡슐화하여 실행 중에 동적으로 교체할 수 있도록 하는 디자인 패턴이다.행동 패턴에 속한 디자인 패턴이다.행동패턴이란?객체나 클래스 사이의 알고리즘이나 책임 분배를 정의하여 복잡한 행동을 관리하고 조정하는데 도움을 주는 패턴한 객체가 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하며 객체 사이의 결합도 최소화에 중점을 둠협력을 관리하여 코드의 유연성과 재사용성을 높이는데 사용됨.장점새로운 전략을 추가하거나 기존 전략을 변경하기 용이하여 코드의 유연성및 확장성을 높임.결합도를 최소화하여 클라이언트 코드가 특정 알고리즘에 종속되지 않도록하여, 필요에 따라 전략을 선택하여 사용할 수 있음.OCP(개방 폐쇄 원칙)을 준수함각 전략이 독립적으로 구현되어 코드의 ..

C++/디자인패턴 2025.07.11

[C++] Iterator 반복자

순서반복자란?주요 기능 및 연산자Iterator 사용법auto 키워드시간 복잡도iterator 반복자란?iterator 반복자는 STL 컨테이너 내부 요소를 순회하는데 사용되는 객체이다.배열의 인덱스를 직접 사용하는 대신, iterator를 활용하면 더 범용적인 코드 작성이 가능함iterator의 역할컨테이너 내 원소 순회원소 삽입, 삭제, 변경반복 구조 최적화iterator의 원리포인트와 유사한 방식으로 작동, 하지만 단순한 메모리 주소가 아닌 컨테이너 요소를 안전하게 조작할 수 있는 인터페이스를 제공함.주의사항iterator가 end()를 초과하여 접근하지 않도록 해야함iterator가 유효한 범위를 유지하는지 신경 써야함iterator를 활용할 때 컨테이너가 변경되면, 무효화된 반복자를 사용하지 않..

C++ 2025.07.10

[Unreal Engine] 리플렉션 시스템

순서리플렉션이란?클래스 리플렉션변수 리플렉션함수 리플렉션리플렉션이란?C++ 클래스의 변수 및 함수 정보를 엔진 내부의 메타데이터 형태로 저장하고, 이를 에디터나 블루프린트에서 활용할 수 있게 만들어주는 기술C++ 클래스에 있는 여러 멤버를 Reflection하여 에디터와 블루프린트에서 직접 설정, 호출이 가능함프로그래머가 작성한 C++ 로직의 뼈대를 디자이너나 다른 팀원들이 에디터에서 직관적으로 조정할 수 있음매개변수를 코드에서만 변경하는 것이 아니라, 에디터에서 바로 조정(슬라이더 또는 입력)하여 반복 테스트를 빠르게 진행가능클래스 리플렉션#include ClassName.generated.h 헤더파일UClass() 매크로해당 클래스를 언리얼 엔진의 리플렉션 시스템에 등록한다는 의미UClass() 매크..

Unreal Engine 2025.07.09