차근차근 꾸준히

한 눈에 알기 쉽게 정리하자

전체 글 14

[면접후기]

일기장 같은 글입니다.이해가 됐다고 바로 넘어가는 것은 금물분명히 학부 강의에서도 배우고 당연시 여겨 넘어갔던 부분들을 면접에서 질문으로 들어오니, 곧바로 떠오르지 않고 추상적으로만 생각났다.꾸준한 복습을 하지 않은 탓일까. 개발에만 집중해서 기본기를 잃어버린 느낌이다. 내 자신이 한참 부족하다는 생각이 들었다.결과가 어떻게 될진 모르겠지만, 학부 강의를 다시 되돌아보고 원리를 직접 설명할 수 있을 정도로 공부해야겠다는 생각이 들었다.C++ 개념, 게임 이론, 선형대수를 다시 공부할 필요성을 느꼈다.fundamental 한 것들을 이번 경험을 바탕으로 확실하게 짚어봐야겠다.면접 경험 덕분에 뭘 공부해야할지 갈피를 잡지 못하던 나에게 이정표가 생겼다.도전과 경험은 중요하다는 것을 다시금 깨닫게 됐다.

프로그래밍 2025.02.14

[Windows API] HWND, HINSTANCE

DX11을 건드리려면 WINAPI도 건드려야 해 살짝 정리만 하려는 글이다.[목차] HWND와 HINSTANCE의 차이 HWND :  Handle Windows의 약자이며 윈도우의 핸들 번호를 저장해서 사용한다.하나의 프로그램에서 많은 양의 윈도우를 띄울수 있다.윈도우 창을 번호(HWND) 로 구분하는것이다. HINSTANCE : 핸들 인스턴스 , 프로그램의 인스턴스 식별자, 쉽게 보면 프로그램 자체의 실체화된 주소. HINSTANCE 타입은 보통 애플리케이션(프로그램)의 인스턴스(핸들)라고 한다.혹은 독립적인 개체인 모듈의 시작 주소라고도 한다. 인스턴스란 하나의 고유한 프로그램을 나타내는 운영체제가 부여하는 고유한 주소값이라 생각하면 된다.GetModuleHandle() 을 통해 얻을 수도 있고, W..

[C++] Operator new, malloc, memset 에 대해

new 및 delete 연산자C++ 언어의 new 및 delete 연산자를 사용하면 할당을 제어할 수 있습니다.learn.microsoft.com마소의 new, delete 연산자에 대한 학습을 하다가 생긴 의문을 정리했다.[목차] 1. Operator new개요:C++에서 동적 메모리 할당을 위해 사용하는 연산자입니다.객체를 생성할 때 호출되며, **생성자(Constructor)**도 자동으로 호출합니다.특징:new 키워드를 사용하여 호출됩니다.메모리를 할당하고, 할당된 메모리 주소를 반환합니다.기본적으로 operator new는 메모리 할당에 실패하면 std::bad_alloc 예외를 던집니다.사용 예제:int* ptr = new int(42); // 정수형 메모리를 할당하고, 42로 초기화std:..

프로그래밍/C++ 2025.01.15

[DX11] 그래픽 파이프라인에 대해 알아보자

참고 그래픽 파이프라인 - Win32 apps이 섹션에서는 Direct3D 11 프로그래밍 가능 파이프라인에 대해 설명합니다.learn.microsoft.com 마소에 나와있는 정보글을 필자가 보기 편하도록 정리한 글이자, 학습을 위해 읽으면서 쓴 글입니다.마소의 정리글은 수정될 수도 있으므로 제 글보단 마소 글을 보는 걸 더 추천합니다.참고로, 링크 중에 마소 홈으로 가지는 경우도 있는데 걍 연결된 곳이 사라진 겁니다. 마소 글에 있는 링크도 안되어있는게 꽤 많아요.   Hull Shader, Domain Shader 단계는 테셀레이션 단계에 포함된다.[목차]1. Input-Assembler Stage(입력 어셈블러 : IA 단계)목적 : 사용자가 채운 버퍼에서 기본 데이터(점, 선 및/또는 삼각형)를..

[C++] constexpr에 대해서

constexpr는 컴파일 시간에 값을 계산하도록 보장하는 키워드이다.이는 컴파일러가 상수를 미리 계산할 수 있게 하여 더 최적화된 코드를 생성하도록 돕는다.이를 사용하면 코드의 명확성과 효율성을 동시에 높일 수 있다.주요 특징컴파일 타임 상수로 사용constexpr로 선언된 변수는 컴파일 타임에 값이 확정되어야 한다.이는 코드 실행 중에 계산되지 않고 컴파일 시점에 이미 결정된다.함수에서 사용 가능constexpr 함수는 컴파일 타임에 계산할 수 있는 식을 처리할 때 사용된다.컴파일 타임뿐만 아니라 런타임에서도 호출될 수 있다(단, 입력이 런타임 값일 경우).C++11부터 도입초기에는 제한이 많았지만, C++14 이후로 기능이 확장되어 더 유연하게 사용 가능하다.1. constexpr 변수constex..

프로그래밍/C++ 2024.12.27

[C++] static에 대해서

요약함수 내부: 값을 유지하며, 한 번만 초기화됨.전역 변수: 접근 범위를 파일로 제한.클래스 멤버 변수: 모든 객체가 공유하며, 클래스 자체에 속함.클래스 멤버 함수: 객체 없이 호출 가능하며, static 멤버 변수에만 접근 가능.static은 공유, 유지, 범위 제한과 관련된 키워드라고 이해하면 된다.1. static 변수static으로 선언된 변수는 메모리 구조에서 데이터(Data)영역에 저장된다.따라서, 프로그램이 시작될 때 메모리에 할당되고 프로그램이 종료될 때 해제된다. 일반 지역변수는 스택(Stack)영역에 저장된다. 이 스택 영역의 변수들은 함수 호출시에 메모리에 할당되며 함수 종료시에 메모리에서 사라진다.1.1 함수 내부에서 사용함수 내에서 선언된 static 변수는 함수가 여러 번 호..

프로그래밍/C++ 2024.12.27

[알고리즘] 백트래킹(Backtracking)

백트래킹(Backtracking)은 문제를 해결하기 위해 가능한 모든 경우의 수를 탐색하는 알고리즘 기법이다. 하지만 단순히 모든 경우를 다 시도하는 '완전탐색'과는 다르다.백트래킹은 불필요한 탐색을 줄이는 데 초점을 맞추고 있다.백트래킹의 과정결정: 문제를 해결하기 위해 한 단계씩 선택(결정)을 진행한다.유효성 검사: 현재 선택이 문제의 조건을 만족하는지 확인한다.만족하지 않으면 "가지치기(Pruning)"를 하고 탐색을 종료한다.되돌아가기: 만족하지 않거나 이미 해결된 경우, 이전 단계로 돌아가 다른 선택을 시도한다.이 '되돌아가는 과정'이 백트래킹이라는 이름의 유래이다.백트래킹의 기본 틀백트래킹은 두 부분으로 구분한다.void backtracking(int depth, int m) { if (dep..

[C++] '<<' , '>>' 비트 시프트 연산(bit shift)

백준 문제를 풀다보니 시프트 연산에 대한 이해가 덜 되서, 정말 가볍게 정리하려고 한다. 시프트 연산과 곱셈 나눗셈의 연관'0b0101' 란 수가 있다. 이는 \(2^2 + 2^0\) 이다. 이에 시프트 연산을 하려고한다. ''0b1010'이 된다. 이는 \(2^3 + 2^1\) 로, \(2^1 * (2^2 + 2^0)\) 이다. 따라서 2를 곱하는 것이 되는 것이고, 이에 반대인 '>> n' 연산은 \(2^n\)로 나누는 연산이 되는 것이다.나누는 것은 '/' 연산과 같다. (소수점이 나오지 않는다.)

[자료구조] DFS, BFS

DFS와 BFS는 그래프(그 중에서 특히 트리)를 탐색하는 방법에서 나온 것이다. 그래프란, 정점(node)과 그 정점을 연결하는 간선(edge)으로 이루어진 자료구조의 일종을 말한다.그래프를 탐색한다는 것은 하나의 정점으로부터 시작하여 차례대로 모든 정점들을 한 번씩 방문하는 것을 말한다.깊이 우선 탐색 (DFS : Depth-First Search)한 루트로 최대한 깊이 내려가 확인한 뒤, 더 이상 깊이 갈 곳이 없다면 다시 돌아가 다른 루트로 탐색한다.  DFS는 스택(Stack)이나 재귀함수로 구현한다. 구체적인 동작 과정은 다음과 같다.탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다.스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리를 한다. 그리고..

[자료구조] 스택과 큐(C++)

스택(Stack)스택은 LIFO(Last in First out)으로, 가장 마지막으로 추가된 데이터부터 출력되는 자료구조이다.  스택의 연산 직접 설계하기push X: 정수 X를 스택에 넣는 연산이다.pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다.만약 스택에 들어있는 정수가 없는 경우에는 -1을 리턴한다.size: 스택에 들어있는 정수의 개수를 리턴한다.empty: 스택이 비어있으면 1, 아니면 0을 리턴한다.top: 스택의 가장 위에 있는 정수를 리턴한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 리턴한다.스택 직접 구현#includeusing namespace std;class Stack {public: Stack() { length = 0; } void push(in..