260223 TIL - 챕터3 팀프로젝트 10일차

2026. 2. 23. 21:28언리얼 7기 본캠프

코드카타... 난이도와 필요사고방식이 급격하게 넓어지고 높아져서 이젠 1시간에 1문제 풀기도 벅찰지도 모르겠음. 하지만 코테를 열심히 해야 비전공자인 나로서 조금이라도 더 유리한 고지를 잡을 수 있다고 생각해서, 벅차도 절대 놓치지 않을 예정.

 

//배달 문제. 거리 배열로 DFS으로 풀어봤는데, 이런 문제에선 priority queue가 더 효율이 좋다고 함.
//근데 이게 무슨 개념인지 모르니 다음문제에서 사용해봤음

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

void DFS(int vilnum, int N, int K, int distsum, const vector<vector<pair<int, int>>>& map, vector<int>& dist)
{
    if (distsum > dist[vilnum] || distsum > K) return;
    
    dist[vilnum] = distsum;
    
    for(const pair<int, int>& pair : map[vilnum])
    {
        int nextvil = pair.first;
        int time = pair.second;
        
        DFS(nextvil, N, K, distsum + time, map, dist);
    }
}

int solution(int N, vector<vector<int>> road, int K) {
    int answer = 0;
    vector<int> dist(N + 1, 500001);
    vector<vector<pair<int, int>>> map(N + 1);
    
    for (const vector<int>& vec : road)
    {
        int a = vec[0];
        int b = vec[1];
        int time = vec[2];
        map[a].push_back({b, time});
        map[b].push_back({a, time});
    }
    
    DFS(1, N, K, 0, map, dist);
    
    for(int i : dist)
    {
        if (i <= K) answer++;
    }
    
    
    return answer;
}

//호텔 대실 문제. priority queue를 사용해서 풀어봤고, queue처럼 뒤에서 넣되 '가장 큰 값'을 맨위로 보낸다고 함
//이 문제에서는 생성시 인자를 변경해서 '가장 작은 값'을 꺼내게 만들어서 사용했음. 굉장히 유용한 듯.

#include <string>
#include <vector>
#include <algorithm>
#include <queue>


using namespace std;

int solution(vector<vector<string>> book_time) {
    int answer = 0;
    vector<vector<int>> intbooktime(book_time.size(), vector<int>(2));
    for(int i = 0; i < book_time.size(); i++)
    {
        intbooktime[i][0] = (stoi(book_time[i][0].substr(0,2)) * 60) + stoi(book_time[i][0].substr(3,2));
        intbooktime[i][1] = (stoi(book_time[i][1].substr(0,2)) * 60) + stoi(book_time[i][1].substr(3,2)) + 10;
    }
    sort (intbooktime.begin(), intbooktime.end());
    priority_queue<int, vector<int>, greater<int>> rooms;
    for(const vector<int>& vec : intbooktime)
    {
        if (rooms.empty())
        {
            rooms.push(vec[1]);
            continue;
        }
        if (rooms.top() <= vec[0])
        {
            rooms.pop();
            rooms.push(vec[1]);
        }
        else
        {
            rooms.push(vec[1]);
        }
    }
    
    answer = rooms.size();
    
    return answer;
}

 

 

주말동안 시간을 좀 써서 인벤토리 로직을 상당히 많이 고쳤고, 이제 아이템 드랍과 습득이 아주 잘 되며 원하는대로 구현이 완료되었음. 이제 남은건 조합대 만들고, 에셋 구해서 연결하는 작업인데, 아이템 특성상 에셋 연결이 굉장히 중요할것이라 생각함...

 

만드는데 시행착오를 너무나도 많이 해서 정리하기가 힘든 수준
무기 부착물 장착도 정상 작동

 

부착물이 장착된 무기를 버릴경우 부착물 정보도 볼 수 있음