본문 바로가기

전체 글53

깊이 버퍼(Depth Buffer) 깊이 버퍼(Depth Buffer) 깊이 버퍼는 이미지가 굳이 필요 없는 텍스쳐이다. 왜냐하면 각 픽셀의 깊이 정보만 담으면 되기 때문이다. 픽셀의 깊이는 0.0 ~ 1.0 사이의 값으로 지정되는데, 0.0은 관찰자(화면 앞의 유저)와 최대한 가까운 픽셀에 해당하고 1.0은 가장 먼 픽셀에 해당한다. 깊이 버퍼의 원소들과 후면 버퍼(Back Buffer)의 픽셀들은 일대일로 매핑된다. 즉, 후면 버퍼의 xy번째 픽셀은 깊이 버퍼의 xy번째 원소에 대응되는 것. 그러므로 후면 버퍼의 해상도와 깊이 버퍼의 해상도는 같아야 한다. 하나의 오브젝트 A를 다른 오브젝트 B가 가린다고 가정해보자. 그렇다면 B가 A보다 앞에 있는지 어떻게 판단해야 할까? DirectX에선 A의 픽셀들이 B의 픽셀보다 앞에 있는지를 .. 2023. 3. 31.
[코드업 3704] 계단 오르기2 문제링크 #include long long int res[1001]; long long int f(int n) { if (1 == n) return res[1] = 1; if (2 == n) return res[2] = 2; if (3 == n) return res[3] = 4; if (n > n; std::cout 2023. 3. 8.
[백준 9934] 완전 이진 트리 문제링크 #include #include std::vector vector[10] = { }; int arr[1024]; void f(int depth, int start, int end) { if (start >= end) { return; } int mid = (start + end) / 2; vector[depth].push_back(arr[mid]); f(depth + 1, start, mid); f(depth + 1, mid + 1, end); } int main() { int k = 0; std::cin >> k; ++k; int i = 0; for (; i > arr[i]; } f(0, 0, i); for (int i = 0; i < k; ++i) { .. 2023. 3. 1.
map 구현 template class Pair { public: Pair(T& t, U& u) : frist(t) , second(u) { } Pair() : frist{} , second{} { } public: T frist; U second; }; template Pair Make_Pair(T& t, U& u) { return Pair{t, u}; } template class Map { public: Map() : RootNode(nullptr) { } ~Map() { PostOrderDelete(RootNode); } private: class Node { friend Map; Pair CurPair; Node* Parent = nullptr; Node* Left = nullptr; Node* Right .. 2023. 2. 27.
[프로그래머스] 컨트롤 제트 문제링크 #include #include #include using namespace std; int solution(string s) { int answer = 0; stringstream ss(""); ss.str(s); stack numbers = {}; while (false == ss.eof()) { string str = {}; ss >> str; if ("Z" == str) { answer -= numbers.top(); continue; } int num = stoi(str); numbers.push(num); answer += num; } return answer; } 2023. 2. 26.
C++ Temp 변수 안만들고 int 변수 스왑하기 void Swap(int& _Left, int& _Right){ _Left += _Right; _Right = _Left - _Right; _Left = _Left - _Right;}int main(){ int A = 3; int B = 5; Swap(A, B); std::cout 2023. 2. 26.
퀵 정렬 #include #include template class DataManager { public: DataManager() {}; DataManager(size_t _Size) { Datas.resize(_Size); }; ~DataManager() {}; void Swap(T& _Left, T& _Right) { T Temp(_Left); _Left = _Right; _Right = Temp; } size_t Partition(size_t _Left, size_t _Right) { T Pivot = Datas[_Left]; size_t Low = _Left; size_t High = _Right; while (Low < High) { while (Pivot < Datas[High]) { --High; .. 2023. 2. 26.
버블 정렬 #include #include template class DataManager { public: DataManager() {}; DataManager(size_t _Size) { Datas.resize(_Size); }; ~DataManager() {}; void Swap(T& _Left, T& _Right) { T Temp(_Left); _Left = _Right; _Right = Temp; } bool Compare(const T& _Left, const T& _Right) { return _Left < _Right; } void BubbleSort() { size_t Size = Datas.size(); for (size_t i = 0; i < Size - 1; ++i) { for (size_t .. 2023. 2. 25.
Array, Vector 구현 #include #include #include using namespace std; template class Array { T* Array_; size_t Size_; public: Array() : Array_(nullptr) , Size_(S) { Array_ = new T[Size_]; } ~Array() { delete[] Array_; Array_ = nullptr; } size_t Capacity() { return Size_; } void Resize(size_t _Size) { T* Temp = Array_; Array_ = new T[_Size]; for (size_t i = 0; i < _Size; i++) { Array_[i] = Temp[i]; } if (nullptr != Te.. 2023. 2. 20.