일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 다익스트라
- String
- MYSQL
- 그래프
- union find
- Stored Procedure
- Hash
- two pointer
- 스토어드 프로시저
- SQL
- Dijkstra
- Trie
- 이진탐색
- Two Points
- Brute Force
- binary search
- DP
- Today
- Total
목록분류 전체보기 (418)
codingfarm
noirstar.tistory.com/12 gamedevforever.com/134 docs.microsoft.com/ko-kr/cpp/build/creating-precompiled-header-files?view=msvc-160 정의 미리컴파일된 헤더(precompiled header)는 이름 그대로 헤더를 미리 컴파일 하는것이다. 자주수정되지 않는 거대한소스(ex : windows.h)를 미리 컴파일하여 컴파일결과를 별도의 파일에 저장하여, 다시 똑같은 헤더를 컴파일시 해당파일을 처음부터 컴파일하지않고 미리컴파일된 헤더 파일을 사용해 컴파일 속도를 월등히 향상시켜준다. 도입 배경 코딩을 하다 보면 프로젝트의 몸집이 커지게 되고, 그에 비례하여 컴파일 타임도 기하급수적으로 늘어나게 된다. 단지 코드 ..
1. 비트맵 출력 비트맵 컴퓨터 분야에서 디지털 이미지를 저장하는 데 쓰이는 이미지 파일 포맷 또는 메모리 저장 방식의 한 형태 화면 상의 각 점들을 직교좌표계를 사용하여 화소 단위로 나타냄 가로 곱하기 세로 만큼의 픽셀 정보를 다 저장해야 하기 때문에 벡터 방식의 이미지나 텍스트 자료에 비해 상대적으로 용량이 크고 처리 속도가 느림 GDI 오브젝트로 취급됨 파일저장형식 : JPEG, GIF, PNG winapi는 gdi+를 추가하지 않으면 PNG를 출력할 수 없다. 윈도우에 비트맵 출력하기 비트맵을 선택하고 가져오기를 눌러, PC에 저장된 파일 중 리소스로 쓸 BMP 파일을 가져온다. 우리는 아래의 파일을 쓸것이다. 추가된 리소스의 ID를 확인한 후 아래 코드를 작성한다. 1 2 3 4 5 6 7 8 ..
1. 흑백에서의 그리기 모드 그리기 모드 : 도형이 그려질 때 원래 그려져 있던 그림과 새로 그려지는 그림과의 관계를 정의하는것 ex : 예전 그림 위에 새그림 덮기, 적절히 혼합하기 가령 2개의 흑백 그림을 4가지 비트 연산으로 합처보면 아래와 같다. 2. 그리기 모드의 종류 그리기 모드를 변경하는 함수와 현재 설정된 그리기 모드를 구하는 함수는 아래와 같다. 1 2 int SetROP2( HDC hdc, int rop2 ); int GetROP2( HDC hdc); cs hdc : 그리기 모드를 변경(또는 조사) 하고자 하는 DC의 핸들 rop2 : 변경할 그리기 모드 값 그리기 모드 설명 R2_BLACK 항상 검정색이다. R2_WHITE 항상 흰색이다. R2_NOP 아무런 그리기도 하지 않는다. R..
1. GDI 오브젝트 GDI(Graphic Device Interface) 3장에서 간략히 설명한 적 있다. 윈도우즈 프로그램을 구성하는 세가지 DLL 중 하나 KERNEL, USER, GDI 화면, 프린터 등의 출력장치를 통제하는 윈도우즈의 핵심 모듈 윈도우즈 프로그램에서 모든 출력은 GDI를 통해서 화면과 프린터로 나가게 되어 있음 GDI Object GDI가 그래픽 출력 및 출력조정에 사용되는 도구 ex : 펜(선 그리기), 브러시(면 채우기), 비트맵, 폰트(문자열 출력)... 사용자는 그래픽을 그리기전에 DC에 원하는 오브젝트를 선택해줌으로써 원하는 모양과 속성으로 그래픽을 출력할 수 있다. GDI 오브젝트는 모두 핸들로 관리되므로 사용자는 GDI 오브젝트 생성 함수를 부르고, 이 함수가 리턴하..
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 #include #include "resource.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT("StrTable"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance , LPSTR lpszCmdParam, ..
흔히들 말하는 단축키이지만 윈도우즈에서 단축키(ShortCut)라는 말은 다른 의미로 사용되므로 엄격히 구분지어야 한다. ShortCut Accelerator $\bullet$ 메뉴 이름에 &을 넣어 Alt키와 함께 사용하는 키 $\bullet$ 메뉴에 있는 항목을 키보드로 선택하는 방법 $\bullet$ 메뉴와 상관없이 사용 가능 액셀러레이터 만들기 우선 리소스뷰에서 메뉴 리소스 파일을 더블클릭하여 편집기를 연다. 메뉴만 봐도 한눈에 단축키가 무엇인지 알 수 있도록 이름 옆에 단축키 값을 입력해준다. 그러기위해 각 메뉴 항목들의 캡션을 아래처럼 바꾼다. 이제 실행해보면 Alt + F 키를 누르면 File 메뉴가 열리는것을 볼 수 있다. 아직은 이름만 수정한것이므로 실제 단축키가 작동하진 않는다. 엑셀러..
0. 메뉴 윈도우즈용 프로그램이 제공하는 가장 표준적인 UI 구조와 기능, 내부적인 운용 방법은 간단치 않지만, 개발툴을 활용하면 비교적 쉽게 구현 가능하다. 프로젝트 내의 리소스파일 폴더를 우클릭하고 새항목을 클릭한다 좌측의 리소스 탭에서 리소스 파일(rc)을 선택한다. 솔루션 탐색기에서 생성된 rc파일을 볼 수 있으며, 리소스 뷰에서 프로젝트에 포함되어 있는 리소스들의 목록을 계층적으로 보여준다. 리소스뷰의 Menu.rc 폴더를 우클릭하여 Menu 리소스를 추가해본다. 솔루션 탐색기 툴바에서 Menu.rc와 resource.h가 추가되었으며 리소스 뷰 툴바에서 메뉴 리소스가 추가된것을 볼 수 있다. 메뉴 리소스를 더블클릭하여 파일을 열면 작업영역 메뉴창의 모습을 볼 수 있다. 작업영역을 아래처럼 수정..
1. 리소스의 분리 프로그램은 코드와 데이터로 구성된다. 코드 : 데이터를 처리하는 수단, 프로그램의 동작을 제어 데이터 : 프로그램의 처리 대상, 코드가 아닌 모든것 ex : 비트맵 아이콘, 메뉴, 문자열... 리소스 : 코드의 논리와 무관한 데이터 ex : 메뉴, 비트맵, 단축키, 문자열, 아이콘, 커서... 별도의 편집기로 만들어져 컴파일되며 링크시에 실행파일에 결합됨 컴파일 과정은 API에서나 MFC에서나 동일하다 도스와 달리 윈도우는 리소스를 만드는 과정과 코딩 과정이 분리되어서 생기는 강점들 디자이너와 프로그래머의 분업이 편리 리소스의 수정과 소스의 컴파일이 분리됨 리소스와 소스를 따로 컴파일하고, 실행파일 생성시에만 함께 링크되면됨 모듈 분할 컴파일의 장점과 비슷 리소스의 재사용이 용이 리소..
Enumerating Adapters docs.microsoft.com/en-us/windows/win32/direct3ddxgi/d3d10-graphics-programming-guide-dxgi Adapter 정의 : 컴퓨터의 HW와 SW이 기능을 추상화 한것 machine에는 수많은 adapter가 존재 일부는 HW로, 일부는 SW로 구현 HW : 비디오 카드... SW : Direct3D reference rasterizer 역할 : graphic application에 의해 사용되는 기능을 구현 현재 시스템에 있는 어댑터와 출력장치에 대해 출력하는 코드 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..
docs.microsoft.com/en-us/windows/win32/direct3ddxgi/d3d10-graphics-programming-guide-dxgi#enumerating-adapters DXGI(DirectX Graphics Infrastructure) Overview 차세대 그래픽스 구성요소(Components)를 위한 공통 프레임워크를 제공 탄생 배경 : 여러 그래픽 API들에 공통적으로 쓰이는 그래픽 관련 작업들을 한데 묶기 위해 DirectX10, 11, 12와 함께 사용 됨 역할 : swap chain, 페이지 전환, 감마 조절 그래픽 어댑터 열거, 디스플레이 모드 열거, 버퍼 포맷 선택, 프로세스간 자원 공유, 윈도우 혹은 모니터로 display하기 위한 렌더링된 프레임 prese..
우리는 앞선 과정에서 수차례 메시지를 사용했다. 앞서 메시지가 생성되는 조건은 2가지라고 배웠다 사용자의 입력에 의해 시스템이 변화를 감지했을때 메시지는 윈도우에 들어오는 여러가지 상황 변화를 통보하기 위해 쓰여진다. 상황변화 : 명시적인 입력이 될 수도 있고, 윈도우에 관한 기본적인 관리도 포함된다. 윈도우에 들어오는 여러가지 메시지에 대해 알아보겠다. 1. 생성 및 파괴 WM_CREATE와 WM_DESTROY는 윈도우가 생성 및 파괴 댈때 보내지는 메시지이다. 각 메시지들은 윈도우 생성시 해야할 일회적인 초기 및 종료 처리에 사용할 수 있다. 가령, 윈도우에서 사용하기 위한 1M의 메모리를 동적으로 할당하고자 하면 아래의 방법을 사용할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 ..
github.com/tony9402/baekjoon/tree/main/graph_traversal
1234567891011121314151617181920#include#include#include using namespace std; int main(void) { map mp; mp["hello"] = 100; cout
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 31 32 33 34 35 36 37 38 39 40 #include #include #include using namespace std; // ex) 2016-09-15 20:59:57.421 0.351s // 2016-09-15 20:59:58.299 8 void StrTok(string& org, vector& ret, const string& delims) { ret.clear(); string new_str; for (int index = 0; index
어휘력이 모자라서 충돌 이외의 적절한 말을 모르겠다. 임의의 범위를 가진 데이터들이 주어질때, 특정 데이터의 범위와 겹치치는 것들을 필터링 하는 방법에 대해서 정리해보았다. 1 : 1 1:1 대응을 검사하는 방법은 간단하다. 가령 [al, ar], [bl, br] 과 같은 범위를 가지는 데이터가 주어젔을 때, 해당 데이터가 서로 겹처지는지 확인하는 방법은 아래와 같다. $$al \leq br \; \& \& \; bl \leq ar $$ 위 조건이 만족된다면 해당 데이터는 겹처지는 것이다. 참고로 겹처지지 않을 조건은 아래와 같다 $$al > br \; || \; bl > ar $$ 1 : N 그렇다면, 하나의 데이터가 주어질때 여러 데이터들과의 충돌 여부를 판정하는 방법은 무엇일까? 하나하나 대응하면서..
lamanus.kr/59
[0, 1, 2, 3, 3, 3, 4, 5, 6, 7, 8, 9] 위 처럼 정렬된 데이터가 있을때, 특정 값을 기준으로 그 보다 낮거나 높은 값들의 갯수를 구하고 싶다. 가령 3보다 낮은 값은 [0, 1, 2] 3개이며, 높은 값은 [4, 5, 6, 7, 8, 9] 6개이다. 이를 구하는 방법은 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include #include #include using namespace std; int main(void) { vector vi = { 0, 1,2,3,3,3, 4,5,6,7,8,9 }; vector::iterator it; it = lower_bound(vi.begin(), vi.end(), 3); cout
임의의 클래스에 대해 sort함수로 정렬할 기준을 세우는것은 operator를 overloading 하면 되지만, 원하는 순간마다 사용자가 원하는 정렬을 하기는 쉽지 않다. 그럴때는 아래의 방법을 사용하면 된다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #include #include #include #include using namespace std; class Node { public: int a, b; Node(int a, int b): a(a), b(b){} Node():Node(-1,-1..
다익스트라 shnoh.tistory.com/15 예제 codingfarm.tistory.com/300 codingfarm.tistory.com/301 BFS와 유사한 형태지만, BFS는 이미 지나간 노드는 새로운 진입을 철저히 막는 반면 다익스트라는 새로 들어온 진입으로의 경로가 기존의 값보다 더 낫다면 새로운 진입이 가능해진다. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 #include #include #define INF 2000000000 usi..