260304 TIL - 챕터3 팀프로젝트 마감 D-1

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

오늘은 시간관계상 코드카타를 한문제만 풀고 바로 팀프로젝트에 전념함

 

//주식가격 문제. stack을 활용하는 문제였는데, 이 시간들과 stack의 관계를 이해하는데 적지않은 시간이 걸림
//결과적으로 시간을 stack에 담아두고 해당하는 값이 나오면 시간들을 쭉쭉쭉 뽑아 값을 대입하고,
//마지막에 남은 값들도 전부 처리해주는 방식으로 문제를 해결함. 사실 설명 자체가 좀 부족한 감이 있어서
//문제를 이해하는데 시간이 좀 많이 걸림...
#include <string>
#include <vector>
#include <stack>

using namespace std;

vector<int> solution(vector<int> prices) {
    vector<int> answer(prices.size(), 0);
    stack<int> time;
    time.push(0);
    for(int i = 1; i < prices.size(); i++)
    {
        while (!time.empty() && prices[i] < prices[time.top()])
        {
            answer[time.top()] = i - time.top();
            time.pop();
        }
        time.push(i);
    }
    while (!time.empty())
    {
        answer[time.top()] = prices.size() - 1 - time.top();
        time.pop();
    }
    return answer;
}

 

대망의 D-1. 오늘 게임도 완성하고 영상도 완성하고 발표할 준비까지 모두 마쳐야함

머지 후 팀원분들과 같이 코드를 보며 고쳐봤는데, 일단 저녁쯤까지 계속해서 맵을 정돈하고 물건과 적을 배치하며 할 때는 문제없이 잘 됐는데, 식사 후 혼자서 테스트를 하는데 반복적인 크래시가 발생함. AI 관련해서 문제가 생긴다는 크래시 로그가 있었는데 직접적인 에러가 안나오고 null참조 에러만 뜸.

어디가 문제인가 싶어서 코드를 계속 뜯어보고 AI에게도 물어보고하는데 뾰족한 답이 안나와서 한참 머리를 싸매다가, 문득 '팅기는 타이밍이 일정하지 않다'라는걸 깨닫고(재시작 누르자마자 팅김, 재시작 누르고 레벨 전환 후 1초 후 또는 2초후 등등에 팅김 등), '타이머 관련 문제일 것 같다'는 생각이 들어 어려워보여서 한번도 들여다보지 않았던 팀원분이 만드신 Behavior Tree코드를 전부 뜯어봄.

 

그 결과, 팀원분이 적 캐릭터의 Patrol을 다루는 과정에서 패트롤 후 대기시간을 타이머 설정으로 람다함수로(!!) 작성해두신 코드를 발견하게 됨.

이러니 아무리 타이머 관련 정리 코드를 작성해도 타이머가 다 안지워지고, 레벨 전환하면서 적은 전부 Destroy됐는데 시간이 다 된 타이머가 그 적을 참조하려고 하니 당연히 null참조가 나면서 터지고, 그 타이밍이 랜덤한 것이었음. 즉시 해당 부분을 지우고 Behavior Tree를 열어서 Patrol에 Sequence로 따로 Wait Idle을 넣어서 타이머 없이 의도한대로 동작할 수 있게 수정함

 

이거 외에도 자잘한 버그들을 엄청 많이 고치다보니 시간이 벌써 12시가 넘었음. 이거 올리고 영상도 찍어서 편집해야하는데... 오늘 잠자기는 글렀음