TIL day 71

2025. 4. 1. 11:42·TIL

TIL 70 은 바쁜 일정으로 적지 못했습니다.

팀 프로젝트 회의와 수업을 듣고, 개인적으로 데디케이티드 서버 공부를 진행했습니다.

https://gbleem.tistory.com/143

 

Unreal Engine - 야구게임(데디케이티드 서버)

아래 글에 이어서 진행되는 내용입니다.https://gbleem.tistory.com/140 Unreal Engine - 데디케이티드 서버 개념 및 실습1. 서버의 종류P2P각 컴퓨터가 서버랑 클라이언트를 모두 수행하는 방식리슨 서버HOST

gbleem.tistory.com

 

 

1. 코딩테스트


오늘은 solved.ac의 class 4의 "최소비용 구하기" 문제를 풀었습니다.

https://www.acmicpc.net/problem/1916

 

문제를 보니 우연히 최근에 공부한 최단 경로 구하는 문제 유형이었습니다.

일단 문제에서 가중치가 양수니까 다익스트라를 쓸 수 있었습니다.

 

처음에는 배열을 가지고 아래처럼 코드를 구성했는데, 계속 통과하지 못했습니다.

더보기
#include <iostream>
#include <vector>
#include <climits>
using namespace std;

int n, m, st, en;
int board[1002][1002];
int vis[1002];

int main()
{
	cin >> n;
	cin >> m;
	
	for(int i = 1; i <= n; ++i)
	{
		vis[i] = 0;
		for (int j = 1; j <= n; ++j)
		{
			board[i][j] = INT_MAX;
		}
	}

	for (int i = 0; i < m; ++i)
	{
		int u, v, w;
		cin >> u >> v >> w;
		board[u][v] = w;
	}
	cin >> st >> en;

	vector<long> distance(n + 2, INT_MAX);
	distance[st] = 0;

	for (int i = 1; i <= n - 1; ++i)
	{
		long minDist = INT_MAX;
		int closeNode = -1;

		for (int j = 1; j <= n; ++j)
		{
			if (!vis[j] && distance[j] < minDist)
			{
				minDist = distance[j];
				closeNode = j;
			}
		}
		if (closeNode == -1)
			break;
		vis[closeNode] = 1;

		for (int j = 1; j <= n; ++j)
		{
			long newDist = distance[closeNode] + board[closeNode][j];
			if (!vis[j] && board[closeNode][j] != INT_MAX && newDist < distance[j])
				distance[j] = newDist;
		}
	}


	cout << distance[en];
}

저번에 공부하면서, 우선순위큐를 사용해서 풀어야만 풀리는 문제가 있다는 말이 기억이 나서 아래처럼 우선순위 큐를 쓰는 코드로 수정하였더니 통과하였습니다.

  • 우선순위 큐로 푸는 다익스트라 코드에 익숙해져야 할 것 같습니다.
더보기
#include <iostream>
#include <vector>
#include <queue>
#include <climits>
using namespace std;

vector<pair<int, int>> adj[1002];
int vis[1002];
int n, m;
int st, en;

int main()
{
	cin >> n;
	cin >> m;

	fill(vis, vis + n + 2, INT_MAX);
	for (int i = 0; i < m; ++i)
	{
		int u, v, w;
		cin >> u >> v >> w;
		adj[u].push_back({ w,v });
	}
	cin >> st >> en;

	priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> pq;

	vis[st] = 0;

	pq.push({ vis[st], st });
	while (!pq.empty())
	{
		auto cur = pq.top();
		pq.pop();

		if (vis[cur.second] != cur.first)
			continue;
		for (auto nxt : adj[cur.second])
		{
			if (vis[nxt.second] <= vis[cur.second] + nxt.first)
				continue;

			vis[nxt.second] = vis[cur.second] + nxt.first;
			pq.push({ vis[nxt.second], nxt.second });
		}
	}
	cout << vis[en];
}

 

 

2. 트러블슈팅


새로운 controller 클래스를 만들어서

아래와 같이 변수를 선언했는데 오류가 발생하였다.

UPROPERTY()
TObjectPtr<UUserWidget>StartGameWidgetInstance;

 

심각도	코드	설명	프로젝트	파일	줄	비표시 오류(Suppression) 상태	세부 정보
오류	LNK2019	"__declspec(dllimport) class UClass * __cdecl Z_Construct_UClass_UUserWidget_NoRegister(void)" (__imp_?Z_Construct_UClass_UUserWidget_NoRegister@@YAPEAVUClass@@XZ)"void __cdecl `dynamic initializer for 'public: static struct UECodeGen_Private::FObjectPropertyParams const Z_Construct_UClass_AMenuController_Statics::NewProp_StartGameWidgetInstance''(void)" (??__E?NewProp_StartGameWidgetInstance@Z_Construct_UClass_AMenuController_Statics@@2UFObjectPropertyParams@UECodeGen_Private@@B@@YAXXZ) 함수에서 참조되는 확인할 수 없는 외부 기호	FoodRumble	E:\MY_GAME\UNREAL\SCC_Unreal_git\SCC_CH4_Team_git\1st-Team3-CH4-Project\FoodRumble\Intermediate\ProjectFiles\MenuController.gen.cpp.obj	1

 

이유는 Build.cs에 UMG가 포함되어있지 않아서 발생하는 문제였다.

 

언리얼 5 버전에서는 default로 설정이 되어있는데, 해당 프로젝트는 4.27 버전으로 만들고 switch 버전을 진행한 프로젝트이다보니 이런 문제가 발생한 것이었다.

 

아래와 같이 추가해주자..

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" , "UMG"});

'TIL' 카테고리의 다른 글

TIL day 73  (0) 2025.04.03
TIL day 72  (0) 2025.04.02
TIL day 69  (0) 2025.03.28
TIL day 68  (0) 2025.03.27
TIL day 67  (0) 2025.03.26
'TIL' 카테고리의 다른 글
  • TIL day 73
  • TIL day 72
  • TIL day 69
  • TIL day 68
gbleem
gbleem
gbleem 님의 블로그 입니다.
  • gbleem
    gbleem 님의 블로그
    gbleem
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • Unreal Engine (73)
      • C++ (19)
      • 알고리즘(코딩테스트) (27)
      • TIL (60)
      • CS (4)
      • 툴 (1)
  • 블로그 메뉴

    • 홈
    • 카테고리
  • 링크

    • 과제용 깃허브
    • 깃허브
    • velog
  • 공지사항

  • 인기 글

  • 태그

    map을 vector로 복사
    additive animation
    actor 클래스
    DP
    blend pose
    C++
    character animation
    Vector
    BFS
    gamestate
    매크로 지정자
    const
    motion matching
    cin함수
    상속
    enhanced input system
    addonscreendebugmessage
    싱글턴
    템플릿
    applydamage
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gbleem
TIL day 71
상단으로

티스토리툴바