일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- c++
- 김성엽
- Windows
- 문법
- Visual Studio
- doit코틀린프로그래밍
- Javascript
- CS
- Tips프로그래밍강좌
- 함수
- Win32
- 지식나눔강좌
- VS ERROR
- 리뷰
- c
- 포인터
- 이지스퍼블리싱
- Tips강좌
- Direct2D
- c#
- Kotlin
- 배열
- 프로그래밍
- 연산자
- tipssoft
- 티스토리
- Programming
- 백준
- Desktop
- Yesterday
- Today
- Total
목록DEV (265)
F.R.I.D.A.Y.
가장 긴 증가하는 부분 수열 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 코드 #include int main(void){ int size, max = 1; int data[1000], dp[1000]; scanf("%d", &size); for(int i = 0; i d..
계단 오르기 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 설명 DP 공부를 하면서 느낀건데, 규칙성이 있다면 점화식을 구하는게 급선무?라 생각한다. 일단, 문제에서 규칙을 정해주었기 때문에 규칙을 보면 다음과 같다. 여기에서 중요한 것이 (3)인데, 마지막에 대한 설명이 존재하기 때문이다. 따라서 마지막 규칙을 기반으로 하면 다음과 같다. dp[i] = dp[i - 3] + data[i - 1] + data[i]; dp[i] = dp[i - 2] + data[i]; 배열 dp는 여태 계산상에서 가장 높은 수를 찾은 데..
모니터 위치 지정 Windows에서는 여러 개의 모니터를 사용할 때 각 모니터의 위치를 정할 수 있다. 나의 경우에는 1번 모니터를 메인으로 위에 2번 모니터가 존재하는 방식으로 사용한다. 이런 상황에서, 멀티 모니터 프로그래밍을 하려면 각 모니터의 위치를 찾아야하는 문제가 있다. 그러나 바탕화면을 담당하는 WorkerW 프로세스의 영역을 구하면 다음과 같다. 각 모니터 모두 FHD 해상도에 세로로 이어 붙인 상황이기 때문에 크기는 1920×2160이 맞다. 그러나 이를 Windows 좌표로 분석하면 다른 값이 노출된다. 위 두 장의 사진은 생성한 윈도우위 좌표를 윈도우 안에 출력해주는 코드이다. 메인으로 사용하고 있는 1번[# 티스토리가 출력되는 화면, 하얀 바탕] 모니터의 좌-상 위치는 (0, 0)이..
실제 기능 구현 윈도우 생성 이전 두 개의 포스트를 통해 그리기 작업과, 맵데이터 관리/처리는 해결했다. 이제, 그래픽 작업과 맵데이터를 작동시키기 위한 메인 윈도우를 구성하자. 멤버 윈도우에서 관리할 멤버들은 다음과 같다. DrawTool* TextTool* IMap* D2D1_POINT_2F MovePoint size_t window_padding, window_gap 여기에서 MovePoint는 메서드 처리 후, 그리기 처리를 할 때 필요다. 그리고 window_padding과 window_gap은 각 블럭 사이 간격과 window border와 블럭간의 거리를 상수로 처리한 것이다. 메서드 이벤트 처리를 위한 메서드는 총 6개로, 다음과 같다. OnLButtonDown OnRButtonDown O..
지뢰찾기의 각종 정보를 저장하고 관리하는 맵데이터 맵 데이터 지뢰찾기를 구성하려면 블럭이 열린 상태인지, 선택된 상태인지, 열리지 않은 상태인지를 저장하는 공간과 함께 해당 요소가 지뢰로 동작하도록 처리가 되었는지 저장하는 상태 정보 저장용 블럭이 필요하다. Block 지뢰 찾기를 구성할 때 각 셀의 정보를 저장하기 위해 구현한 클래스이다. Block 클래스에서 관리해야할 항목은 총 세가지이다. 블럭의 지뢰 활성화 여부 블럭의 공개 상태 블럭 주변의 지뢰 수 마지막 항목인 주변 지뢰 수의 경우에는 굳이 관리를 하지 않아도 상관은 없지만, 일단 한번에 처리를 해야 나중에 연산을 줄일 수 있기 때문에 처리를 했다. 포함 멤버 위에서 설명한 데이터를 관리하기 위해 총 세 개의 멤버로 구성되어 있다. BLOCK..
지뢰찾기 그래픽 처리를 위한 구성 그리기 작업 GUI 프로그래밍을 위해서 그리기 툴을 구성해봤다. 그리고, 해당 그리기 툴을 다른 곳에서도 이어서 사용할 수 있도록 그리기 정보를 담고 있는 객체를 생성 및 이들을 관리하는 클래스를 구성해봤다. 그리기 툴 DrawTool 그래픽 엔진은 Direct2D를 이용했고, 이를 다른 프로그램에서 쉽게 이용할 수 있도록 정형화했다. 먼저 구성할 메서드는 다음과 같다. OnPaint(DrawSet*) OnSize 위 두 메서드는 그리기 작업에 영향을 주는 WM_PAINT와 WM_SIZE 메시지가 들어왔을 때 해당 프로시저에서 각각 연결해주면 된다. OnPaint에 인자로 넘기는 은 하단에 설명을 잇는다. 생성자 ID2D1HwndRenderTarget을 생성할 때는 기본..
지뢰찾기 지뢰찾기는 정말 고전 게임이다. 동시에 게임의 기본을 배움에 있어 도움이 될 것 같기도 하다. 구현 또한 그리 어렵다고 느끼지 않기 때문이다.[# 적어도 내가 느끼기엔 그랬다.] 지뢰찾기 룰은 게임상 존재하는 모든 지뢰를 찾아낸다는 점을 제외하고는 잘 몰랐다. 때문에 지뢰찾기를 구현하기에 앞서 게임의 룰을 생각했다. 지뢰찾기 룰 생각한 지뢰찾기는 아래와 같았다. 게임 클리어 조건은 애매모호한 점이 많아서 구글에서 인스턴스 게임으로 제공하는 지뢰찾기 룰을 이용했다.[# 게임은 그렇게 못해서, 클리어 조건을 체크하는데 시간이 좀 걸렸다.] 주변 팔방[# 상하좌우 네 방향 및 그 대각선 네 방향]에 지뢰가 존재할 경우 그 수를 세고, 열었을 때 보여준다. 주변 팔방에 지뢰가 존재하지 않는경우, 주변 ..
메모리 관련 작업을 하면 주로 보이는 C6385 발생 재현 C6385 경고는 주로 메모리 할당 관련 작업을 할 때 일어납니다. MS 공식 문서의 내용을 보면 접근이 허용된 메모리 공간을 벗어난 경우에 이런 경고를 띄우는 것으로 안내하고 있습니다. int arr[10]; int i = 0; while(i
이미 시중에 CS로 만들어진 ADBlock 프로그램이 존재하지만 기억나지 않을 정도로 익숙해져버린 카카오톡 PC AD. 존재하는것은 상관 없지만, 창의 일정 부분을 저렇게 차지하다보니 공간 낭비가 아닐 수 없다. 이미 시중에 C#으로 만들어진 ADBlock 프로그램이 존재하지만, 원리나 한번 알아보자고 만든 코드. #include #include #include using namespace std; int main() { HWND kakao; kakao = FindWindowW(L"EVA_Window_Dblclk", L"카카오톡"); char titleKao[100]{}; GetWindowTextA(kakao, titleKao, 99); cout
먼저 들어온 데이터가 먼저 나오는 선입선출 구조 물건을 구매한다고 가정하면, 먼저 계산대에 줄을 선 사람이 물건 계산을 하는 것이 지당한 이야기다. 이렇게 먼저 들어온 데이터가 먼저 나가도록 하는 구조를 프로그램에서도 적용이 가능한데, 이 기능을 위해 Queue를 이용할 수 있다. 큐 데이터 구조를 말하라고 하면 스택과 함께 먼저 거론되는 자료형이 아닐까 싶다. 큐는 스택과 같이 두 가지 필수 함수가 구성되어야 한다. push pop 구현 큐는 크게 두 가지 방법으로 구현을 할 수 있다. 배열을 이용하는 방법과 연결리스트를 이용하는 방법이 있는데, 둘 모두 장단점이 있다. 배열을 활용한 구현 배열 구현은 구현 자체가 간단하다는 장점이 있다. 다만 이는 재사용성을 생각하지 않을 때의 경우이고, 이미 사용한..