Unreal5 공부/TIL

2026/04/17 TIL

anna59 2026. 4. 17. 21:06

 

오늘의 목표

  • 아침 코드카타
  • 언리얼 7번 과제 필수 기능
  • 언리얼 7번 과제 도전 기능

 

코드카타

[문제] 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

 

[풀이]

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int n, int m) {
    vector<int> answer;
    long long mcd;
    long long lcm;
    
    if (n <= m)
    {
        for (int i = 1; i <= n; ++i)
        {
            if (n % i == 0 && m % i == 0)
            {
                mcd = i;
            }
        }
    }
    else{
        for (int i = 1; i <= m; ++i)
        {
            if (n % i == 0 && m % i == 0)
            {
                mcd = i;
            }
        }
    }
    lcm = n * m / mcd;
    answer.push_back(mcd);
    answer.push_back(lcm);
    return answer;
}

 

최대공배수는 for loop으로 돌면서 둘 다 0으로 나눠지는 수를 구하고, 최소공배수는 최대공약수를 이용해서 구함.

최소 공배수 = n * m / 최대공약수

 


 

언리얼 마스터 2강

	//TArray<int32> IntArray;

	//IntArray.Add(5);

	//IntArray.Emplace(6);

	//IntArray.AddUnique(6);

	//IntArray.Insert(600, 2);

	//for (int32 i = 0; i < IntArray.Num(); ++i)
	//{

	//}

	//if (intArray.Num())
	//{

	//}

	//// [](){}

	//struct FMyCustomStruct
	//{
	//	bool operator()(const int32 A, const int32 B)const
	//	{
	//		// 내림차순
	//		return A > B;
	//	}
	//};

	//IntArray.Sort(FMyCustomStruct());

	////IntArray.Sort([]() {});
	//
	//TArray<int32> ReturnIntArray = IntArray.FilterByPredicate([](const int32 FindValue) {return FindValue < 9; });

	//int32 Index = IntArray.Find(5);
	//bool b = intArray.Contains(5);

	//IntArray.Remove(10); // 10을 전부 삭제
	//IntArray.RemoveSingle(10); // 첫 10을 삭제

	//if (IntArray.IsValidIndex(2)) // 인덱스가 없을 경우를 대비한 안전장치
	//{
	//	IntArray.RemoveAt(2); // 인덱스를 기준으로 삭제.
	//}

	//IntArray.RemoveAll([](int32 Value) {return Value == 5; });

	//IntArray.Empty();

	TArray<int32> MyIntArray;
	int32 random;

	while (MyIntArray.Num() < 30)
	{
		random = FMath::RandRange(0, 1000);
		if (random <= 100) {
			MyIntArray.Emplace(random);
		}
	}

	MyIntArray.RemoveAll([](int32 Value) {return Value < 50; });

	MyIntArray.Sort([](const int32& A, const int32& B) {return A < B; });

 

 

	TSet<int32> IntArraySet;
	// 중복이 안됩니다.

	IntArraySet.Add(100);

	if (IntArraySet.Contains(100))
	{

	}

	int32* FoundPtr = IntArraySet.Find(20);

	for (TSet<int32>::TConstIterator It = IntArraySet.CreateConstIterator(); It; ++It)
	{
		if (*It < 60)
		{
			It.RemoveCurrent(); // 현재 메모리를 지움. Iterator 기능
		}
	}
    
    
	TSet<int32> SetA = { 1,2,3 };
	TSet<int32> SetB = { 3,5,6 };

	// 공통된 것 뽑기
	TSet<int32> SetC = SetA.Intersect(SetB);

	// 두개 합쳐버리기
	TSet<int32> SetC = SetA.Union(SetB);

	SetC.Compact();
	SetC.Shrink();

	TArray<int32> MyArray = SetC.Array(); // Array로 자동으로 넘어감

 

과제