TIL

[250207 TIL] 다른 클래스의 함수를 동적으로 호출 가능한 기능, 델리게이트

yoosorang 2025. 2. 7. 21:26

1️⃣ 알고리즘 코드카타

[ 성격 유형 검사하기 ]
https://school.programmers.co.kr/learn/courses/30/lessons/118666

🤖 AI 피드백

1. vector 대신 unordered_map 활용 가능

2. 불필요한 find 사용 → unordered_map을 사용하면 불필요

#include <string>
#include <vector>
#include <unordered_map>

using namespace std;

string solution(vector<string> survey, vector<int> choices) {
    unordered_map<char, int> scoreMap = {
        {'R', 0}, {'T', 0}, {'C', 0}, {'F', 0},
        {'J', 0}, {'M', 0}, {'A', 0}, {'N', 0}
    };

    vector<int> choiceScore = {3, 2, 1, 0, 1, 2, 3}; // 1~7에 대한 점수
    
    for (int i = 0; i < survey.size(); ++i) {
        char disagree = survey[i][0];
        char agree = survey[i][1];

        if (choices[i] < 4) { // 비동의 선택
            scoreMap[disagree] += choiceScore[choices[i] - 1];
        } else if (choices[i] > 4) { // 동의 선택
            scoreMap[agree] += choiceScore[choices[i] - 1];
        }
    }

    string answer = "";
    vector<pair<char, char>> personalityPairs = {{'R', 'T'}, {'C', 'F'}, {'J', 'M'}, {'A', 'N'}};

    for (auto& p : personalityPairs) {
        answer += (scoreMap[p.first] >= scoreMap[p.second]) ? p.first : p.second;
    }

    return answer;
}

 

💭 코드카타 회고

unordered_map은 정렬이 안돼서 vector를 사용한 건데

카운트는 unordered_map으로 하고 성격유형을 판단할 때 map으로 하면 되는구나!

하나의 자료구조를 사용하려하는 고정관념이 있었던 것 같다. 

다양한 자료구조를 사용할 수 있도록 생각을 넓혀보자!

 

2️⃣ 언리얼 C++ 퍼즐플랫폼 게임 제작

💥오늘 마주한 문제들

앞으로는 에러를 따로 모아놓기로 했다!

오늘은 써줘야 하는 모듈이나 UFUNCTION을 안 써서 오류가 발생했다.

 

물론 강의를 잘 들었으면 발생할 일이 없었겠지만 사람이 어찌 배운 내용을 다 기억하겠는가?

그리고 이렇게 에러를 몸소 체험해보아야 기억에 오래 남는 법

 

[Trouble Shooting] 기타 오류

🔶 UMG 모듈 안 넣으면 발생하는 에러

yoosorang.tistory.com

 

[Trouble Shooting] 헤더 오류

🔶 AddDynamic 중단점 명령 실행AddDynamic으로 바인딩할 때 사용하는 함수는 UFUNCTION으로 선언되어있어야 함➡️PlatformInterface의 OnPlatformEndOverlap을 UFUNCTION으로 선언하지 않음

yoosorang.tistory.com

AddDynamic을 찾아보며 델리게이트라는 용어가 가물가물해서 정리해보기로 했다.

 

🔹추가 공부_델리게이트

공부해보니 게임의 흐름을 특정 액터에게 알릴 때와 같이 굉장히 유용하게 사용될 개념인 것 같다.

 

Unreal5 델리게이트

🔶 개요델리게이트는 이벤트 기반 프로그래밍을 구현할 수 있도록 해주는 기능으로, 특정 이벤트가 발생했을 때 특정 함수를 실행하도록 바인딩하는 역할을 한다. 델리게이트는 단일, 멀티,

yoosorang.tistory.com