전체 글 142

백준 - 빗물(c++)

문제 : https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 문제설명 1. 푸는 방법이 굉장히 많다. 어떤 방법으로 푸느냐에 따라 난이도가 달라지는 것 같다. 알고리즘 1. 먼저 가장 높은 위치를 구한 뒤 왼쪽과 오른쪽으로 나눠 생각한다. 2. 왼쪽부터 가장 높은 위치 인덱스 까지 반복문을 진행한다. 조건은 최대값인 tempValue 보다 현재위치의 높이가 크거나 같을 때 최대인덱스인 tempIdx부터 현재 위치까지 반복문을 진행..

백준 - 가르침 (c++)

문제 : SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제설명 1. 조합문제이다. 21개의 조합 중(anta tica 제외) 제한시간이 1초는 중복제거를 한다면 충분히 가능한 시간이다. 알고리즘 1. 남극언어의 특징인 접두사와 접미사는 무조건 읽어야만한다.(anta tica) 2. 21개의 알파벳과 K - 5 만큼 조합한다. 3. 조합된 원소를 이용해 읽을 수 있는 단어를 체크한다. 주의사항 1. 남극언어 필수 알파벳 5개보다 가르칠 수 있는 개수가 적으면 읽을 수 있는 단어는 0이다. 2. DFS 함수 구현 시 idx 변수를 통해 했던 조합은 중복 제거를 해야한다. 안그러면 시간초과 발생 구현 bool a..

백준 - 괄호의 값 (C++)

문제 : https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 문제설명 괄호가 나오는 문제이다. 괄호가 나오는 문제는 왠만하면 스택을 사용하고, 여기서는 temp 변수가 핵심이다. 알고리즘 1. 열린 괄호가 나오면 stack에 push하고 괄호 모양에 따라 temp에 특정 값을 곱해준다. 분배 법칙이라 생각하면 이해하기 쉽다. 2. 닫힌 괄호가 나오면 바로전에 닫힌 괄호에 맞는 열린괄호가 있으면 result에 값을 더해주고 조건이 틀리면 break..

C++ - MFC 기초 클래스

MFC 콘솔 응용 프로그램 C/C++ 언어에 대한 지식만 있으면 곧바로 실습 가능 상당수의 MFC 클래스 사용 가능 (유틸리티 클래스, 집합클래스, 파일 입출력 클래스 등) 알고리즘 개발 시 유용 (GUI 배제한 간편한 프로그래밍 prinf() 등을 이용한 편리한 확인 가능) 실행 파일 생성 과정 컴파일러(console.h, stdafx.h, console.cpp, stdafx.cpp, resource.h) -> console.obj, stdafx.obj 리소스컴파일러(console.rc, 각종리소스(문자열,아이콘), resource.h) -> console.res 컴파일러 + 리소스컴파일러 -> 링커(API & MFC 라이브러리 , C/C++ 라이브러리) -> 실행파일(console.exe) 데이터 타..

C++ - SDK와 MFC 프로그래밍

MFC 프로그램 기본 골격 응용프로그램 클래스 정의 메인(=프레임) 윈도우 클래스 정의 응용 프로그램 객체 선언 메시지 맵 선언 -> 메세지 맵 부분은 afxmsg.h에 정의되어 있다. CHelloApp theApp; ---> int WINAPI WinMain() //MFC 라이브러리 내부에 숨겨진 프로그램 실행 시작점 { ptr = ... // 응용 프로그램 객체의 주소값으로 변수 ptr 초기화 Bool CHelloApp::InitInstance() { InitInstance(); // 초기화: 각종 초기화 작업과 더불어 메인 윈도우 객체 생성 //-> 메인 윈도우 객체의 생성자에서 // 운영체제 수준의 실제 윈도우를 만든다. } CMainFrame::CMainFrame() { } void CMainF..

C++ - MFC 개요

운영체제 컴퓨터 주기억장치에 상주 컴퓨터 시스템의 자원관리 응용프로그램 수행제어 사용자와 컴퓨터 HW 간의 인터페이스 담당 관리하는 자원 - CPU, 기억장치, 입출력장치 등 윈도우 운영체제의 특징 Graphic User Interface 메시지 구동 구조 멀티 태스킹 - 운영체제가 여러 개의 응용 프로그램을 동시 실행, 멀티스레딩 - 응용 프로그램 내부에서 여러 개의 스레드를 통해 실행 윈도우 으용프로그램의 특징 윈도우 API 윈도우 운영체제가 응용 프로그램을 위해 제공하는 각종 함수의 집합 -> HW를 제어하는데 필요한 함수 사용 메세지 핸들러 집합 - 메세지 핸들러는 메시지를 받았을 때 동작을 결정하는 코드 -> 메세지 핸들러 집합을 윈도우 프로시저라 부름 실행 파일과 DLL 집합 - DLL(Dyn..

C++ - 전처리기 지시어(조건부 컴파일)

C++ 실행 파일 만들어지는 순서 전처리 -> 컴파일 -> 오프젝트 파일 생성 -> 링커에 의해 실행파일 생성 전처리 위 순서 중 전처리는 컴파일 하기 전 소스 파일 내에 존재하는 전처리 지시어를 처리하는 작업을 뜻한다. 특징은 #기호가 붙는다. 조건부 컴파일 소스파일 중 조건에 부합하는 소스만 컴파일 하는 방법이다. 대표적으로 #if, #ifdef, #elif 등이 있다. 그 중 ifdef는 상수가 정의 되어 있다면 참이고 컴파일 한다. 아래는 예제이다. #define A 100 #ifdef A //실행된다. 나머지는 기존의 if else문 처럼 사용하면 된다.

C++ - Windows API와 MFC

Windows API API는 Windows의 OS가 제공하는 함수들이며 OS가 직접 사용하는 함수들이다. 즉 OS나 시스템 프로그래밍과 직접 통신해야 하는 저수준 프로그래밍 에서는 필수적이다. 특히 MFC는 Windows API 함수를 기반으로 만들어진거기 때문에 MFC를 사용하기 위해서는 반드시 알아야한다. BOOL : 단일 논리값 ex) 0,1 HANDLE : 커널 객체를 다루기 위한 핸들 ex) pointer와 비슷 DWORD : 정수(int) TCHAR : 문자(char) LPTSTR : 문자열(TCHAR * ) MFC 자료형 COLORREF : RGB값을 나타낼 수 있는 자료형이다. 아래는 예시이다. COLORREF colorValue = RGB(255,255,255); CString : MF..

MFC - CRuntimeClass

기능 클래스 이름을 사용하지 않고 객체를 생성한다. 메모리 상에 객체의 자료형을 검사한다. 메모리 상에 객체의 유효성을 검사한다. 객체 직렬화(Serialization)에 대한 정보를 제공한다. 사용조건 CRuntimeClass 구조체를 이 기능을 사용하려는 클래스의 static 멤버변수로 입력 CRuntimeClass 구조체를 static 멤버변수로 사용하기 위해 3가지 매크로 이용 선언부 : DECLARE_DYNAMIC, DYNCREATE, SERIAL 정의부 : IMPLEMENT_DYNAMIC 나머지 같음 뒤의 매개변수에 따라 기능이 달라짐 CObject로부터 상속받아야 한다. (CObject는 MFC의 최상위 클래스) MFC 내부에서 CRuntimeClass를 이용하는 객체에 접근할 때, CObj..

728x90