목록전체 글 (413)
오답노트
1. 나머지 원리 이를 이용해 자리수가 점점 커지는 숫자들을 줄여나가면서 계산할 수 있다. https://www.acmicpc.net/problem/4375 (A+B)%C = ((A%C) + (B%C))%C (A×B)%C = ((A%C) × (B%C))%C 2. 나머지 원리2 https://www.acmicpc.net/problem/1769 X의 각 자리의 수를 단순히 더한 수 Y를 만든다. 예를 들어 X가 1107이었다면, Y는 1+1+0+7=9가 된다. Y=9는 3의 배수이므로 X=1107 역시 3의 배수가 되는 것이다. 즉, X의 각 자리의 수를 단순히 더한 수 Y는 X와 같은 배수 갖는다.
1. Dlg 포인터를 가져다가 UI 를 사용하던것 서로 모순되는 상황이라 데드락이 걸린 상태 쓰레드는 UI를 사용할려고 하고 Dlg에서는 종료하라고 flag를 내린 상태 하지만 Dlg가 사라지면서 UI를 사용하지 못하니 Thread가 제대로 해제 되지 못했다. 2. PumpMessage 로 PostThreadMessage 가 호출될 때까지 계속 기다린다. CWinThread에 flag를 내린 후 아래 코드로 PostThreadMessage 가 호출 될 때까지 계속 기다린다 (개념이 맞는지 잘 모르겠다.. 호출 될때까지 기다리는건지 아니면 호출을 계속 시키는건지.. 느낌상 더 이상 호출될 메세지가 없을때까지 보는거 같다..) MSG msg; while (::PeekMessage(&msg, NULL, 0, ..
1. 좌표계를 그대로 할 것. -> 아무 생각없이 x축 y축을 바꿔서 받았더니 결과가 다르게 나옴 -> 대충 맞는 부분도 있지만 다른것이 존재함 2. queue 에 push 하는 타이밍 -> 좌표계에서 인접한 객체를 찾을 때 => 좌표계를 전부 돌면서 객체를 발견할 때 마다 push -> 좌표계에서 지정된 지점부터 점점 퍼져 나갈 때 => 좌표계를 입력 받을때 미리 push 3. 다른 큐와 비교할 때 주의점 -> 다른 큐가 방문했던 곳을 비교해서 방문할때 아예 방문하지 않았을 때도 생각해야한다. ex) 다른 큐가 방문했던 곳을 비교할때 자신보다 작을때를 비교한다 (현재 큐 돌고있는 큐보다 먼저 왔었는지) 그때 아예 방문하지 않았을 때도 고려해야한다. 보통 -1로 배열을 초기화 하기때문에 방문하지 않으면 ..
간단하게 DB 접속 에디트 컨트롤에 쿼리를 적어서 실행할 수 있도록 만들었다. Connection String 은 MSSQL 용
https://blog.naver.com/tipsware/221337692149 [실습] MFC에서 ODBC를 사용하여 DBMS에 데이터 Query 하기 - Step1 1. 실습을 진행하기 전에 봐야 할 내용들! [ MFC를 기반으로 실습 진행 ] 이 실습은 Visual Studio 20... blog.naver.com https://blogattach.naver.net/2db8318295cdc91539dcbd89b7572655fea25fb974/20180813_229_blogfile/tipsware_1534096287017_5apjLZ_zip/ExamODBC.zip
int nLength, nLength2; wchar_t* bstrCode; char* pszUTFCode = NULL; nLength = MultiByteToWideChar(CP_ACP, 0, pszCode, lstrlen(pszCode), NULL, NULL); bstrCode = SysAllocStringLen(NULL, nLength); MultiByteToWideChar(CP_ACP, 0, pszCode, lstrlen(pszCode), bstrCode, nLength); nLength2 = WideCharToMultiByte(CP_UTF8, 0, bstrCode, -1, pszUTFCode, 0, NULL, NULL); pszUTFCode = new char[nLength2+1]; WideCha..
std::vector::iterator it; for (it = pDlg->m_Vector.begin(); it != pDlg->m_Vector.end(); it++) { myTAG_BASE tagBase = *it; //... } 정확히 개념적으로는 잘 모르겠지만 따로 컨테이너의 크기를 사용자가 for문으로 넣지 않고 반복자의 끝을 컨테이너의 마지막 포인터로 지정함으로써 컨테이너 관리만 잘해주면 사용자가 번거로울 일이 많이 줄어드는듯 하다. 주의할 점으로는 end()는 컨테이너의 마지막의 다음 요소이다. 2개의 데이터가 들어가 있으면 비어있는 3번째 컨테이너의 포인터를 가르킨다.
CMap mapHeader; CString str; mapHeader.SetAt(1, "TEST"); if (mapHeader.Lookup(1, str)) { //str = ... } mapHeader.RemoveAll(); 기본적인 사용법 CMap mapHeader; KEY : CMap 내부에서 key를 관리하는 데이터 타입 ARG_KEY: CMap에게 key를 전달하는 데이터 타입 VALUE: CMap 내부에서 값을 관리하는 데이터 타입 ARG_VALUE: CMap에게 값을 전달하는 데이터 타입 출처: https://yoonemong.tistory.com/139 [Sw.Dev] 순으로 Key, Value 순으로 SetAt 하여 Lookup 함수를 통해 Key 값으로 Value를 반환하는 구조
CString string = "abc" char* ch = (LPSTR)(LPCSTR)string; ch = string.GetBuffer(0); 구글 돌아다니기 힘들다
//행과 열을 입력 받고 각 행렬의 데이터를 입력 후 가로와 세로의 합을 구한다 int main() { int nRows, nCols; printf("행과 열의 개수를 각각 입력하세요: "); scanf("%d %d", &nRows, &nCols); int** nMat; int* nSumRow; int* nSumCol; nMat = (int**)malloc(sizeof(int*) * nRows); nSumRow = (int*)malloc(sizeof(int) * nRows); nSumCol = (int*)malloc(sizeof(int) * nCols); memset(nSumCol, 0x00, sizeof(int) * nCols); memset(nSumRow, 0x00, sizeof(int) * nCol..