TIL day 71

2025. 4. 1. 11:42·TIL
목차
  1. 1. 코딩테스트
  2. 2. 트러블슈팅

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
  1. 1. 코딩테스트
  2. 2. 트러블슈팅
'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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.