stringstream
·
내배캠/C++
stringstream문자열을 마치 입력 스트림(cin)이나 출력 스트림(cout)처럼 사용할 수 있는 도구이다.문자열 조작이 필요한 작업에서 매우 유용하다.파싱: 문자열을 공백이나 특정 구분자를 기준으로 데이터를 분리 문자열 조합: 숫자와 문자열을 조합하여 하나의 문자열로 생성  *문자열 파싱(입력 스트림 역할)#include #include // stringstream 사용하기 위한 헤더#include // 스트림에 입,출력하기 위한 헤더using namespace std;int main(){ // 기본적으로 공백을 기준으로 데이터를 나눔 string today = "2022 05 19"; int year, month, day; stringstream ss(today); ..
디자인 패턴(Factory Pattern)
·
내배캠/C++
Factory Pattern객체 생성 로직을 클라이언트 코드로부터 분리시켜 캡슐화 하는 데 초점을 맞춘 디자인 패턴이다.클라이언트는 생성 과정의 세부 사항을 몰라도 팩토리 메서드를 통해 객체를 생성할 수 있게 한다. 텍스트 RPG를 만드는 과정 중에 Enemy 객체를 생성하는 로직을 전투를 관리하는 BattleManager 클래스로부터 분리하고자 이 팩토리 패턴을 사용하였다. // 인터페이스class IMonsterFactory{public: virtual ~IMonsterFactory() = default; virtual unique_ptr CreateMonster(const int& PlayerLevel) const = 0;};// 고블린 팩토리class GoblinFactory : pub..
Greedy 알고리즘
·
내배캠/C++
Greedy 알고리즘이란? 현재 단계에서 가장 최선이라고 생각되는 선택을 반복적으로 수행하여 문제를 해결하는 방법이다.국소적으로 최적의 선택을 하면, 그것이 곧 전체적으로도 최적의 해가 된다는 가정하에 동작한다.특정 문제에서 간단하면서도 빠르게 최적의 해를 구할 수 있지만, 모든 문제에서는 아니다. 따라서 문제가 Greedy로 접근하기에 적합한지를 분석하는 것이 중요하다.   Greedy 알고리즘의 특징 1. 국소 최적화:매 순간 가장 좋은 선택을 하여 최적의 해를 보장한다.과거의 선택은 고려하지 않으며, 미래를 예측하지도 않는다.현재의 선택이 미래의 선택에 영향을 주지 않는다.미래를 예측하지 않는 점 때문에 모든 문제에서 최적의 해를 보장할 수 없다. 이유는 아래에서 설명하겠다.2. 단계적 해결:문제를..
friend class
·
내배캠/C++
friend class한 클래스의 private 혹은 protected 멤버에 다른 클래스가 직접 접근할 수 있도록 허용하는 기능이다.이를 통해 두 클래스가 밀접하게 협력할 수 있도록 한다.  특징1. 캡슐화 유지:friend는 클래스간 협력을 허용하면서도 외부에는 비공개 멤버를 노출하지 않는다.2. 단방향 관계:class A가 class B를 friend로 선언하면, class B는 class A의 private/protected 멤버에 접근할 수 있지만, 반대는 성립하지 않는다.3. static 멤버 접근 가능:friend 클래스는 static 멤버에도 접근할 수 있다.4. 효율적인 데이터 공유:getter/setter를 사용하지 않고 데이터를 직접 공유할 수 있다. 주의점1. 캡슐화 위반 위험:fr..
Linked List 클래스로 구현
·
내배캠/C++
// 노드 클래스 정의class Node{private: int Data; Node* Next;public: Node(int Value) { this->Data = Value; this->Next = nullptr; } friend class LinkedList; // LinkedList가 private, protected 멤버에 접근 허용};// 링크드리스트 클래스 정의class LinkedList{private: Node* Head; int NodeCount;public: LinkedList(int Value) { this->Head = new Node(Value); this->NodeCount =..
유클리드 거리 공식
·
내배캠/C++
유클리드 거리 공식  float GetDistance(const FVector2D& FirstLocation, const FVector2D& SecondLocation){ float DeltaX = SecondLocation.X - FirstLocation.X; float DeltaY = SecondLocation.Y - FirstLocation.Y; return FMath::Sqrt((DeltaX * DeltaX) + (DeltaY * DeltaY)); }​