본문 바로가기

무작정 따라해보기(정리, 문제풀기)

(28)
23. WIN32API 프로그래밍 - 폼 기반의 윈도우 생성하기 '나우캠퍼스X아워즈팜'유튜브의 'Win32 API 7강. 다이얼로그 (3/4)'영상을 보고 정리한 내용입니다. 폼 기반 윈도우 생성 폼 기반의 윈도우 프로그램은 단일 프로그램을 작성할 때 많이 사용합니다. 폼 기반의 윈도우는 WinMain()에서 DialogBox()를 호출하는 방식으로 생성하며 이때 부모 윈도우는 0이나 NULL로 설정해줍니다. 타이틀 바꾸기 다이얼로그의 속성인 캡션을 설정(단점: 프로그램 실행 중에는 바꿀 수 없음) SetWindowText() -- 타이틀을 언제든 바꿀 수 있음 폼 기반의 윈도우를 생성하는 코드입니다 -> 클릭 파일 열기/닫기 파일을 열거나 저장할 때 띄워지는 다이얼로그를 보통 공용 대화상자라고 합니다. 파일을 열거나 저장할 때 OPENFILENAME 구조체를 이용하..
22. WIN32API 프로그래밍 - 모달리스형 다이얼로그 '나우캠퍼스X아워즈팜'유튜브의 'Win32 API 7강. 다이얼로그 (2/4)'영상을 보고 정리한 내용입니다. 다이얼로그란 무엇인지, 모달형 다이얼로그를 어떻게 사용하는지 알고싶다면 이 링크를 클릭하세요 -> 모달형 다이얼로그 모달리스형 다이얼로그 모달리스형 다이얼로그 생성 함수 CreateDialog HWND CreateDialog( HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent, DLGPROC lpDialogFunc ); hInstance : 인스턴스 lpTemplate : 폼을 아이디 형태로 지정(리소스에서 컨트롤들을 올려놓을 수 있는 폼을 만든 후) hWndParent : 이 다이얼로그를 실행시키는 윈도우의 핸들(메뉴에 의해 다이얼로그가 떴다..
21. WIN32API 프로그래밍 - 모달형 다이얼로그 '나우캠퍼스X아워즈팜'유튜브의 'Win32 API 7강. 다이얼로그 (1/4)'영상을 보고 정리한 내용입니다. 다이얼로그 다이얼로그도 하나의 윈도우라고 할 수 있고 다이얼로그는 모달형 다이얼로그와 모달리스형 다이얼로그로 나누어집니다. 많은 응용프로그램이 다이얼로그 형태 위에 여러 형태를 처리하는 방식을 사용합니다. 모달형 다이얼로그 그 창이 띄워졌을 때 다른 창을 실행할 수 없다. 한 개의 윈도우를 띄우고 집중한 하나의 일을 할 때 사용한다. ex: 파일을 열거나 저장할 때 사용. 모달리스형 다이얼로그 그 창이 띄워졌을 때 다른 창도 실행할 수 있다. 여러개의 윈도우를 띄우고 다양한 멀티태스킹 작업을 할 때 사용한다. ex: 포토샵처럼 여러 창을 띄우며 사용. 다이얼로그를 생성할 때 생기는 메시지 WM_..
20. WIN32API 프로그래밍 - 타이머 관련 '나우캠퍼스X아워즈팜'유튜브의 'Win32 API 6강. 키보드와 마우스, 타이머 (3/3)'영상을 보고 정리한 내용입니다. 타이머 관련 메시지 & 함수 컴퓨터를 켜면 운영체제가 실행되기 전 컴퓨터 안에 있는 CMOS에서 하드웨어 시스템에 대해서 체크를 합니다. CMOS는 컴퓨터를 실행하고 바로 시간을 재기 시작하며 시간에 대한 정보들을 가지고 있습니다. 그렇게 계속 발생이 되는 컴퓨터의 시간 관련 정보들을 가져와서 프로그램 안에서 쓸 수 있도록 해주는 것이 os의 타이머입니다. 타이머는 일정한 간격마다 메시지를 발생시키고(WM_TIMER), 함수를 실행시킬 수도 있습니다. 그래서 일정한 시간이 됐을 때 어떠한 처리를 시킬 수 있습니다.(코드를 실행) 타이머를 생성하는 함수 SetTimer() UINT_..
19. WIN32API 프로그래밍 - 마우스 관련 '나우캠퍼스X아워즈팜'유튜브의 'Win32 API 6강. 키보드와 마우스, 타이머 (2/3)'영상을 보고 정리한 내용입니다. 마우스 관련 메시지 마우스도 컴퓨터의 주변 장치이기 때문에 운영체제가 먼저 감지를 하며 메시지 형태로 응용프로그램에 전달이 됩니다. 마우스를 움직이거나 클릭, 스크롤, 드래그할 수 있습니다. 이런 움직임이 전부 메시지로 전달이 됩니다. WM_MOUSEMOVE 마우스가 이동할 때 발생하는 메시지이다. 부가적인 정보를 lPram에 담아오는데 lParam에 마우스 위치 정보(이동한 현재의 마우스 위치)가 담겨진다. x, y 좌표는 2바이트씩 잘라서 알아낼 수 있다. 마우스의 x좌표 : LOWORD(lParam) -> (하위 2바이트) 마우스의 y좌표 : HIWORD(lParam) -> ..
선형탐색, 이진탐색(python) 탐색 선형탐색 또는 순차탐색 리스트의 앞에서부터 뒤로 하나씩 조사하면서 값을 탐색 리스트의 마지막 인덱스보다 i가 작으면서 리스트의 i방 값이 찾고자 하는 값이 아니면 계속 1을 증가시킨다. 찾고자 하는 값이면 그냥 바로 나와서 그 인덱스를 리턴해준다. 찾고자 하는 값이 리스트 안에 없다면 i는 리스트의 길이와 같아지므로 -1을 리턴한다.(원하는 값이 없다.) 리스트의 길이에 비례하는 시간이 소요됨 시간복잡도 : O(n) def linear_search(L, x): i = 0 while i < len(L) and L[i] != x: i+=1 if i < len(L): return i else: return -1 이진 탐색 탐색하려는 리스트가 정렬되어있을 때만 적용 가능 맨 처음, 맨 마지막의 중간 인덱스..
정렬(python) 리스트의 정렬 python의 정렬 함수나 리스트의 메서드는 기본적으로 오름차순으로 설정되어있습니다. 만약 내림차순으로(반대로 정렬) 정렬하려면 reverse=True로 설정하시면 됩니다.( ex: sorted(L, reverse=True), L.sort(reverse=True) ) 리스트의 정렬 함수와 메서드 sorted(), sort() sorted(리스트) 내장 함수, 정렬된 새로운 리스트를 얻어냄 리스트.sort() 리스트의 메서드, 해당 리스트를 정렬함 문자열이 들어있는 리스트의 정렬 사전 순서(알파벳 순서)에 따라 정렬이 됨 대문자가 우선적으로 정렬이 됨 문자열 길이 순서의 오름차순으로 정렬하려면? key를 이용 ex: sorted(L, key=lambda x: len(x))
이진탐색(python 코드) "어서와! 자료구조와 알고리즘은 처음이지?" 강의의 이진탐색 실습의 코드 def solution(L, x): answer = -1 upper = len(L)-1 lower = 0 while lower x: upper = middle-1 elif L[middle] < x: lower = middle+1 elif L[middle] == x: answer = middle break return answer 이 리스트는 정렬이 되어있다. 그렇기 때문에 이진탐색을 할 수 있다. lower가 upper보다 커질 때까지 반복한다. 만약 x가 리스트에 없다면 이 while문을 끝까지 돌 것이다.(x값이 없어서 lower가 upper보다 커지면) 그럼 결국 answer에는 -1의 값이 들어간다. 그리고 lower, up..