1. Day43

  • 알고리즘 코드카타
  • C++과 Unreal Engine으로 3D 게임 개발
  • 스탠다드 클래스
  • TA 클래스

2. CH3 - C++과 Unreal Engine으로 3D 게임 개발(Day43)

  • Chapter 3 C++과 Unreal Engine으로 3D 게임 개발(3-2)
    • 충돌 이벤트로 획득되는 아이템 구현하기

3. 알고리즘 코드카타

  • K번째수(초기 코드)
    • range - based for문으로 commands를 순회하면서 그안에서 for문으로 array의 배열을 commands대로 잘라서 temp에 넣고 sort로 정렬한 다음 temp의 배열에서 k번째 수를 answer 배열에 추가
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;

    for (auto& it : commands)
    {
        vector<int> temp;
        for (int i = it[0] - 1; i <= it[1] -1; i++)
        {
            temp.emplace_back(array[i]);
        }
        sort(temp.begin(), temp.end());
        answer.emplace_back(temp[it[2] - 1]);
    }
    return answer;
}
  • K번째수(추가 코드)
    • range - based for 문 하나만 commands 기준으로 순회하면서 temp 에 array를 복사해 넣고 temp를 순회하지않고 temp의 i와 j번째 구간만 정렬한다음 k번째 수를 answer에 추가
    • for문을 하나 줄일 수 있다는 장점이 있지만 기존 코드대비 for문 마다 temp에 array의 전체 배열을 복사해 넣는다는 점에서 배열이 길어진다면 효율이 좋지 못할 수있음
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;
    vector<int> temp;

    for (auto& it : commands)
    {
        temp = array;

        sort(temp.begin() + it[0] -1, temp.begin() + it[1]);
        answer.emplace_back(temp[it[0] + it[2] - 2]);
    }
    return answer;
}
  • 두 개 뽑아서 더하기(초기 코드)
    • 이중 for 문으로 모든 더해지는 경우의수를 구한다음 answer 에 넣고 sort로 오름차순 정리
    • 정렬된 answer 를 unique로 중복 되는 원소는 뒤로 밀고 erase로 지움
      #include <string>
      #include <vector>
      #include <algorithm>
      

using namespace std;

vector solution(vector numbers) {
vector answer;

for (int i = 0; i < numbers.size() - 1; i++)
{                       
    for (int j = i + 1; j < numbers.size(); j++)
    {
        answer.emplace_back(numbers[i] + numbers[j]);
    }
}

sort(answer.begin(), answer.end());
answer.erase(unique(answer.begin(), answer.end()), answer.end());

return answer;

}

  • 두 개 뽑아서 더하기(개선 코드)
    • set이 중복과 정렬을 자동으로 처리한다는 점을 이용해 numbers의 서로 다른 인덱스끼리의 모든 합을 set에 넣고 answer.assign을 이용해 할당
    • sort, unique, erase 과정을 assign하나로 압축
#include <string>
#include <vector>
#include <algorithm>
#include <set>

using namespace std;

vector<int> solution(vector<int> numbers) {
    vector<int> answer;
    set<int> s;

    for (int i = 0; i < numbers.size() - 1; i++)
    {                       
        for (int j = i + 1; j < numbers.size(); j++)
        {
            s.emplace(numbers[i] + numbers[j]);
        }
    }

    answer.assign(s.begin(), s.end());

    return answer;
}

4. 베이직 실전 클래스

  • System 객체 활용 계획 레포트 제출

5. 프로파일러 CI/CD 특강

  • .pdb파일에 디버깅 기록이 있어서 배포때는 제외해야함
  • 디버깅 팀 및 Profilling
    • Assertion
      • check : 거짓이면 치명적으로 중단 배포 버전에선 꺼짐
      • verify : check와 기본 동작은 같으나 배포 버전에서도 작동
      • ensure : 거짓 이여도 로그/콜스택 남기고 계속 진행
    • Profiler
      • Stat : 콘솔에서 Stat 명령어(FPS, UNIT, Game, CPUStalls, GPU 등)로 사용
      • Unreal Insights Frontend : Trace 활성화로 사용
      • Profiling Macro Functions : CPU 시간 측정(stat 콘솔 용), CPU 이벤트 마커(Unreal Insights 용), 태그별 메모리 추적

6. 내일 계획 : CH3 강의 학습, 알고리즘 문제 집중, 베이직 실전 클래스 과제 제출

+ Recent posts