| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 디자인패턴
- 파일시스템 구현
- 병행성 관련 오류
- DirectX12
- 락
- 멀티프로세서
- codility
- 쓰레드
- 다이나믹 프로그래밍
- 스케줄링
- DirectX 12
- 다이나믹프로그래밍
- 멀티쓰레드
- 렌더링 파이프라인
- directx
- 병행성
- 그리디알고리즘
- 자료구조
- 타입 객체
- 백준
- I/O장치
- 동적계획법
- 운영체제
- 컨디션 변수
- OS
- 영속성
- 그리디 알고리즘
- 프로그래머스
- Direct12
- 알고리즘
- Today
- Total
목록전체 글 (499)
기록공간
복잡한 게임은 텍스처, 3차원 메시 등 수많은 자원을 사용한다. 그런데 그 자원들 중 항상 GPU에 필요한 것은 많지 않다. 예를 들어 야외의 숲과 숲 속에 있는 큰 동굴을 배경으로 한 게임을 생각해 보자. 동굴을 표현하는 데 쓰이는 자원은 플레이어가 동굴에 들어가기 전까지는 필요하지 않으며, 또한 동굴에 들어가면 숲의 자원은 필요하지 않다. Direct3D 12에서 응용 프로그램은 자원을 GPU 메모리로 부터 내림('퇴거')으로써, 그리고 필요한 경우 다시 GPU에 올림('입주')으로써 자원의 상주성을 관리한다. (상주성이란, 자원이 GPU 메모리에 들어 있는지에 대한 여부이다.) 상주성 관리의 핵심은 응용 프로그램이 사용하는 GPU 메모리의 양을 최소화하는 것이다. 전체 게임에 필요한 자원들을 모두 ..
최소 값으로 만들기 위해서는 뺄셈 이후에 나오는 모든 더하기 연산에 괄호를 하면된다. 이 말은 즉슨, 최초로 나오는 뺄셈 이후부터 식이 끝날때까지 뺄셈 연산을 해주면 최소 값을 만들 수 있다. #include #include using namespace std; int main() { string input; cin >> input; string temp = ""; bool checkMinus = false; int result = 0; for (int i = 0; i
우선 최대 구성할 수 있는 팀 수를 구한다. 그리고 인턴쉽 프로그램에 참여하는 수를 남은 학생 수와 빼준다. 하지만 그래도 인턴쉽에 참여해야 할 수가 남아 있으면 구성한 팀에 있는 학생에서 채우면 된다. 남은 인턴쉽 참여 인원을 3으로 나누면 인턴쉽을 보내야 할 팀 수가 나오며, 3으로 나누었을때 한 팀이 또 깨지게 되므로 구한 팀 수에서 1을 더한다. 그리고 앞서 구했던 최대 구성 팀수와 빼주면 된다. #include #include using namespace std; int main() { int girl, boy; int intern; cin >> girl >> boy >> intern; int maxTeam = 0; int tGirl = girl; int tBoy = boy; while (tru..
다음 문제를 풀기 위해서는 30의 배수가 되기 위한 규칙을 알아야 한다. 입력받은 숫자들 중 0이 항상 포함되어야 한다. 모든 숫자들의 합이 3의 배수여야 한다. 문자열로 입력을 받고 '0'이 포함되는지와 모든 숫자의 총 합이 3의 배수인지 확인해주기만 하면 된다. 만약 모든 조건을 만족한다면, 숫자들을 내림차순으로 정렬하면 입력받은 수를 이용한 30의 배수인 가장 큰 수가 나온다. #include #include #include using namespace std; bool cmp(char a, char b) { return a > b; } int main() { string str; cin >> str; bool checkZero = false; long long totalNum = 0; for (i..
"원형이 되는(Prototypical) 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성합니다." (GoF의 디자인 패턴 169p) 이번 장에서는 프로토타입에 대해서 다루기도 하지만, '프로토타입' 용어와 개념이 어떻게 유래되었는지도 함께 다룬다. 우선 패턴부터 살펴보도록 하자. 프로토타입 디자인 패턴 몬스터에도 종류가 존재한다. 한 개체에서도 여러 종류로 몬스터가 나뉠 수 있다. 게임에 나오는 몬스터마다 Ghost, Demon, Sorcerer 같은 클래스를 만들어보자. class Monster { // 기타 등등.. }; class Ghost : public Monster {}; class Demon : public Monster {}; class S..
리스트란? 리스트(List) 또는 선형 리스트(Linear list)는 자료를 정리하는 방법 중 하나이다. 우리는 일상 생활에서도 많은 리스트를 사용하고 있다. 예를 들어, 오늘 해야 할 일이나 슈퍼에서 사야할 물건들을 리스트로 정리한다. 리스트에는 보통 항목들이 차례대로 정리되어 있다. 리스트의 항목들은 순서 또는 위치를 가진다. 리스트는 기호로 다음과 같이 표현한다. L = (item(0), item(1), item(2), ..., item(n-1)) 다음은 대표적인 리스트의 예이다. 사고 싶은 물건들 : (스마트폰, 자전거, 가방, ..., 신발) 이번 주에 해야 할 일들 : (자료구조 숙제, 아르바이트, 집 청소, ..., 빨래) 가고 싶은 여행지들 : (파리, 지리산, 마라도, ..., 안면도)..
너비 우선 탐색 (Breadth Firest Search : BFS)은 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘 중 하나이다. 현재 정점과 인접한 모든 간선을 우선적으로 검사하며, 그 중 방문하지 않은 정점을 찾아 순차적으로 방문해 나아간다. 더이상 방문할 수 없을때 까지 반복하며, 인접한 간선을 우선적으로 검사하기 위하여 Queue를 사용한다. 어떻게 진행되는지를 그림을 통해 살펴보자. 1을 방문하면서 인접한 정점인 2, 3, 그리고 7을 큐에 넣어준다. 그리고 큐에 들어간 순서대로 방문하면서 큐가 빌때까지 반복 수행해준다. 이 작업을 모든 정점이 방문되었을때까지 반복해주면 된다. 구현 위 그래프 정보를 바탕으로 깊이 탐색을 구현해보자. #include #include #includ..
깊이 우선 탐색 (Depth First Search : DFS)은 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘 중 하나이다. 현재 정점과 인접한 간선들을 검사하다가 방문하지 않은 정점을 발견하면 그 간선을 통해 방문하지 않은 정점으로 이동하는 것이다. 이 과정을 반복하다가 더 이상 방문할 수 있는 정점이 없는 경우 마지막으로 통과한 간선을 통해 뒤로 돌아가서 해당 정점에서 방문할 수 있는 정점을 탐색한다. 그림을 통해 한번 살펴보자. 위 그림의 그래프가 존재하고 한 정점에서 여러 개의 정점으로 이동이 가능할 때 정점의 번호가 더 작은 쪽을 먼저 방문한다고 가정하자. 우선, 정점 1에서 깊이 우선 탐색을 한다고 하자. 먼저, 정점 1에서 연결된 간선들을 통해 연결된 정점을 확인하면 2, 3..