260323 TIL - 챕터4 멀티플레이어 게임개발 11일차

2026. 3. 23. 23:33언리얼 7기 본캠프

//n진수 게임 문제
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string tobase(int num, int n){
    if (num == 0) return "0";
    
    string result = "";
    string numbers = "0123456789ABCDEF";
    
    while (num > 0)
    {
        result += numbers[num % n];
        num /= n;
    }
    reverse(result.begin(), result.end());
    return result;
}

string solution(int n, int t, int m, int p) {
    string answer = "";
    string fullnumbers = "";
    int totalnumbercount = t * m;
    for(int i = 0; fullnumbers.size() < totalnumbercount; i++)
    {
        fullnumbers += tobase(i, n);
    }
    for(int i = p - 1; i < fullnumbers.size(); i += m)
    {
        answer += fullnumbers[i];
        if (answer.size() == t) break;
    }
    return answer;
}

//후보키 문제
#include <string>
#include <vector>
#include <unordered_set>

using namespace std;

bool checkuniqueness (const vector<vector<string>>& relation, int current, int rowcount, int colcount){
    unordered_set<string> unique;
    
    for(int i = 0; i < rowcount; i++)
    {
        string data = "";
        for(int j = 0; j < colcount; j++)
        {
            if (current & (1 << j)) data += relation[i][j];
        }
        unique.insert(data);
    }
    if (unique.size() == rowcount) return true;
    else return false;
}

bool checkminimality (int i, const vector<int>& passedkey){
    for(int key : passedkey)
    {
        if ((i & key) == key) return false;
    }
    return true;
}

int solution(vector<vector<string>> relation) {
    int answer = 0;
    int rowcount = relation.size();
    int colcount = relation[0].size();
    vector<int> passedkey;
    for(int i = 0; i < (1 << colcount); i++)
    {
        if (checkuniqueness(relation, i, rowcount, colcount) && checkminimality(i, passedkey))
            passedkey.push_back(i);
    }
    answer = passedkey.size();
    return answer;
}