C++(18)
-
엔진 개발 02 - Log 시스템
이전에도 프로젝트를 진행하면서 규모가 작다면 그냥 코드를 한 줄씩 디버깅해도 문제가 없었는데 규모가 커지면서 기능별로 클래스를 분류하니 디버깅이 어려웠습니다. 디버깅의 편의성을 위해서 Logging을 위한 Class를 만들어주었습니다.강의 내용을 참고하고 AI를 활용해 주석을 추가해줬습니다.Logger Class전체적인 코드 변화는 아래 링크의 Github의 features branch에서 해당 Commit ID를 확인https://github.com/Jin-SukKim/JEngine/tree/featuresCommit ID : 49a2911f71c8c9ef74619c0d00bb9e4a2c89c862public:... static Logger& getInstance() { static Logg..
2025.10.19 -
엔진 개발 01 - 프로젝트 초기 설정
프로젝트 생성엔진 프로젝트를 시작하기 하기 위해 Git과 VS2022 설정을 해줬습니다.규모가 작은 아주 간단한 계산기 같은 프로젝트면 상관없겠지만 렌더러와 같은 클래스가 많아지고 기능이 이것저것 많이 들어가는 경우 Project를 여러개 만들어서 Dependency를 설정해주는 것이 코드를 정리하기 더 좋은 것 같습니다.추가적으로 클래스가 많아지면 기능별로 클래스를 따로 폴더별로 묶어서 분류하는게 관리하기 종하집니다.일단 Application, Asset, Engine 3개의 프로젝트를 만들어줬습니다.여기서 Application과 Asset은 그냥 Empty Project로 아무것도 없이 만들었고 Engine은 이번 프로젝트의 Core 부분으로 Static Library로 프로젝트를 생성했습니다.Ass..
2025.10.18 -
엔진 개발 00 - 시작
엔진 개발의 시작여태까지 강의를 보고 따라하면서 WinAPI + C++, C++ + DirectX11 조합으로 간단한 렌더러나 엔진은 구현했습니다.그런데 이렇게 진행한 대부분의 엔진의 코드는 지금 계속 공부하면서 되돌아보면 간단한 구조로 어느정도 하드코딩되어서 그냥 순차적으로 나열해 구현되어 있는 것 같습니다. 즉, 진짜 엔진의 구조로 만들어진게 아니라 그냥 순차적으로 코딩해 만들었지만 그냥 Singleton, Composition 등 약간의 디자인 패턴과 클래스로 나눠 두었을 뿐 추상화 작업은 거의 이루어지지 않았습니다.그런데 이번에 HongLab의 Real-Time Rendering With Vulkan 강의를 듣고 확장 가능한 엔진을 어떻게 만들면 좋을지 알았습니다. 여태 공부한 그래픽스 이론과 이..
2025.10.16 -
(Easy - Sorting) Leetcode - 169. Majority Element
이 문제는 배열이 주어졌을 때 배열에서 과반수를 차지하는 숫자를 찾는 것입니다.과반수를 차지하는 숫자는 배열의 절반 크기(n/2)보다 많습니다. 가장 간단하게 풀 수 있는 방법은 정렬을 한 뒤 Index = n / 2에 있는 수를 반환하는 것입니다.과반수를 차지하는 숫자를 찾는 것이므로 정렬을 하면 배열의 중간에 과반수를 차지하는 수가 오기에 간단하게 답을 찾을 수 있습니다. int majorityElement(std::vector &nums) { std::sort(nums.begin(), nums.end()); return nums[nums.size() / 2]; }이 방법은 정렬하는 시간으로 인해 평균 시간복잡도 O(N log N)의 시간을 가집니다. Hash..
2024.07.14 -
(Easy - Sliding Window) Leetcode - 643. Maximum Average Subarray I
숫자 배열이 주어지면 이 배열 안에서 만들 수 있는 연속된 부분 배열들 중 가장 큰 부분 배열의 평균값을 찾는 문제입니다.만약 [1, 12, -4, -6] 배열이 있으면 부분 배열은 연속적으로 만들어져야 하므로 [1, 12]나 [12, -4, -6]과 같은 부분 배열은 가능하나 [1, -4]와 같이 떨어져 있는 원소들은 부분 배열로 만들 수 없습니다.가장 큰 평균값을 찾는 것이므로 부분 배열의 원소의 수로 나누기 전 원소들의 합이 가장 큰 부분 배열을 찾으면 됩니다.이때 문제에서 주어진 부분 배열의 길이는 k입니다.즉, 부분 배열의 길이가 k인 배열의 원소들의 합이 가장 큰 경우를 찾으면 됩니다. 생각나는 가장 간단한 방법은 모든 부분 배열을 시도해보는 것입니다. double findMaxAver..
2024.07.13 -
(Easy - Linked List) Leetcode - 206. Reverse Linked List
이 문제는 Linked-List를 뒤집는 문제입니다. 이전 노드, 현재 노드, 다음 노드를 각각 추적하며 각 노드가 가르키는 방향을 바꿔줍니다./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */class Solution {public: ListNode* reverseList(ListNode*..
2024.07.07