본문 바로가기

둥지49

[프로그래머스] 연속 부분 수열 합의 개수 문제링크 #include #include #include using namespace std; int solution(vector elements) { set set = {}; size_t size = elements.size(); for (size_t i = 1; i 2023. 5. 2.
C/C++ 더블 포인터 사용 까닭 가끔 C/C++ 프로그래밍을 하다 보면 더블 포인터 인자를 가진 함수를 보곤 한다.굳이 더블 포인터를 사용하는 까닭이 뭘까?  #include void Swap(int* _A, int* _B){ int C = 0; //스왑 C = *_A; *_A = *_B; *_B = C;}int main(){ int* APtr = new int(3); int* BPtr = new int(5); std::cout  위 코드는 포인터 변수가 가진 값을 스왑해주는 코드이다. 포인터가 가진 변수의 값을 바꾸기 위한 목적이라면 위 코드로도 충분하지만만약 포인터 자체의 값, 즉 주소값을 바꾸고 싶다면 어떻게 해야 할까? #include void Swap(int** _A, int** _B){ int* C = nullptr; C =.. 2023. 5. 1.
캐싱 캐싱은 데이터를 나중에 쉽게 재사용할 수 있도록 미리 연산해두는 것을 말한다. 컴퓨터의 프로세스들은 최근에 자주 사용하거나 자주 사용된 메모리를 캐싱하여 상대적으로 느린 메인 메모리의 접근 횟수를 줄여 성능을 향상시킨다. 대부분의 메모리 위치들은 짧은 시간동안 한 번 이상 접근되기 때문에 하드웨어 수준에서 캐싱할 경우 연산 성능 향상에 크게 도움이 된다. 캐싱은 소프트웨어에 있어서도 비슷한 접근을 한다. 만약 어떤 작업 또는 연산이 특별히 느리다면, 연산을 필요한 것보다 많이 수행하는 것은 낭비일 것이다. 때문에 한 번 작업한 결과는 메모리에 저장해두고 나중에 필요할 때 재사용할 수 있어야 한다. 일반적으로 느린 작업들 디스크 접근 같은 파일을 두 번 이상 열고 읽는 것은 피해야 한다. (아마 파일 시스.. 2023. 4. 3.
Unreal MSB3073 에러 시도해볼 것들1. 언리얼 프로젝트 폴더 삭제하고 재생성. 2. 백그라운드에서 실행 중인 라이브 코딩 삭제라이브 코딩이 문제인 경우 출력창에 아래 에러가 뜬다.1>Unable to build while Live Coding is active. Exit the editor and game, or press Ctrl+Alt+F11 if iterating on code in the editor or game   3. .uproject 파일 내부 확인 2023. 4. 1.
깊이 버퍼(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.