본문 바로가기

전체 글

(231)
메모리 계층 구조와 페이징 기법 가상 메모리에서 필요한 페이지가 메모리에 없으면 페이지 폴트가 발생.운영체제가 보조 기억 장치에 있는 필요로 하는 페이지를 주기억 장치로 이동하고 주기억 장치에 자리가 없으면 페이지 교체 알고리즘 실행.자주 사용되는 페이지는 주기억 장치에 유지. 캐시 메모리들은 자주 사용되는 이러한 페이지들을 저장해, CPU가 주기억 장치에 접근하는 시간을 줄인다.캐싱 전략에 따라 자주 사용되는 페이지의 주변 페이지도 캐싱되는 경우가 있다.메모리 계층 구조와 페이징 기법은 메모리 자원 활용의 효율성을 높이기 위해 함께 작동.
렌더링 파이프라인에서 좌표 변환에 대해서 렌더링 파이프라인에서 좌표 변환은 로컬 좌표에서부터 화면 좌표로 변환하는 일련의 과정을 의미한다. 1. 로컬좌표 객체 자체의 고유 좌표계.메쉬의 각 정점(Vertex)들은 메쉬의 원점 기준으로 표현. 로컬행렬 : 로컬좌표를 월드 좌표로 변환하기 위해 로컬 행렬을 사용. 이 행렬은 주로 위치, 회전, 크기 정보를 담고 있으며, 이를 통해 로컬 좌표를 월드 좌표계로 변환 2. 월드 좌표월드 좌표는 모든 객체가 공통으로 공유하는 좌표계로컬 좌표가 월드 좌표로 변환하면 srt 가 월드의 기준 좌표로 표현.3. 뷰 좌표 뷰 좌표는 카메라를 기준으로 한 좌표계카메라가 원점에 위치하고 카메라의 방향이 z축 방향으로 정렬된 상태로 좌표들이 변환이 과정을 통해 모든 좌표가 카메라의 위치와 방향을 기준으로 변환되기 때문에..
백준 1806 - 투포인터 #include #include #include #include #include using namespace std;int main(void){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, s; cin >> n >> s; vector arr(n); for (int i = 0; i > arr[i]; } int startIdx = 0; int endIdx = 0; int ans = INT_MAX; int sum = 0; sum += arr[startIdx]; while (startIdx = s) { int num = endIdx - startIdx + 1; sum -= arr[startIdx]; startIdx++; i..
백준 투포인터 2230 start end 를 두고 특정 기준 m 에 따라 start 혹은 end 를 ++ 하면서 풀어가면 모든 경우의 수를 확인 가능하다.O(n) 정도로 그럭저럭.... #include #include #include #include #include using namespace std;int n, m;int main(void){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m; vector arr(n); for (int i = 0; i > arr[i]; } sort(arr.begin(), arr.end()); int startIdx = 0; int endIdx = 0; int answer = INT_MAX; while (start..
백준 LIS 2 - 12015 배열 크기가 더 커진 LIS 풀이에는 차이가 없다. 중요한건 lower_boung 를 사용해서 lis 의 크기를 유지하면서도 lis 내용을 갱신해준다. #include #include #include #include using namespace std;int main(void){ int n; cin >> n; vector arr(n); for (int i = 0; i >arr[i]; } vector lis; lis.push_back(arr[0]); for (int i = 1; i lis.back()) { lis.push_back(arr[i]); } else { auto iter = lower_bound(lis.begin(), lis.end(), arr[i]); *iter = arr[i..
백준 24060 병합 정렬 #include #include using namespace std;int n, m;int countAnswer = 0;int answer = 0;void merge(vector&, int, int, int);void merge_sort(vector& arr, int start, int end){ if (start & arr, int start, int mid, int end){ int i = start; int j = mid + 1; int t = 0; int size = end - start + 1; vector temp(size); while (i > n >> m; vector arr(n); for (int i = 0; i > arr[i]; } merge_sort(arr, 0, arr.size() ..
백준 11053 LIS 1 #include #include #include #include using namespace std;int main(void){ int n; cin >> n; vector arr(n); for (int i = 0; i >arr[i]; } vector lis; lis.push_back(arr[0]); for (int i = 1; i lis.back()) { lis.push_back(arr[i]); } else { auto iter = lower_bound(lis.begin(), lis.end(), arr[i]); *iter = arr[i]; } } cout
보스 몬스터 제작 전체 코드 보스몬스터 https://github.com/petemus/ShootingGame3D/blob/master/Source/ShootingGame3D/Enemy/BossEnemy.cpp SplineComponenthttps://github.com/petemus/ShootingGame3D/blob/master/Source/ShootingGame3D/InGameFunc/SplineActorComponent.cpp Spline 을 이용한 점프 공격일반 점프 공격 대신 미리 공격 위치를 알려주면서 점프 경로를 보여주어 플레이어가 대처 할 수 있는 패턴을 만들기 위해 Spline을 사용해 보았습니다.프로젝트가 끝나고 나서 깨달은 것이 있는데 SplineComponent 는 원래 제공하고 있으니SplineC..