본문 바로가기

전체 글70

[자료구조]합병 정렬(merge sort) 합병 정렬 분할 정복 알고리즘의 하나로 정렬되지 않은 리스크를 절반으로 나누어 비슷한 크기의 리스트로 나눕니다. 분할된 리스트의 크기가 1이 될 때까지 반복합니다. 이렇게 분할된 리스트들을 다시 병합하여 정렬하는 방식이 합병 정렬입니다. 다음은 합병 정렬의 예입니다. 그림 출처 : 위키 합병정렬 https://ko.wikipedia.org/wiki/%ED%95%A9%EB%B3%91_%EC%A0%95%EB%A0%AC 기본 이론 합병 정렬은 길이가 비슷한 정렬이 된 두 리스크를 정렬된 하나의 리스트로 만드는 것이라고 생각하면 됩니다. 즉, {2,4,6,8} , {1,3,5,7,9}로 정렬된 두 리스트가 있습니다. 이 두 리스트를 정렬된 하나의 리스트로 만들기 위해서는 각 리스트의 첫 번째 인자를 비교하여 작.. 2018. 2. 12.
[윈도우10]윈도우10 화면분할이 안되는 경우 윈도우 10 화면분할이 안 되는 경우 이번에 노트북이랑 데스크 탑을 모두 포맷을 했는데, 갑자기 화면분할이 안되길래 찾아보았습니다. 찾아도 잘 안 나오고 화면불할은 안되고... 짜증이 나던 찰나에 결국엔 찾았습니다. 제어판에 들어가서 '접근성 센터'로 들어갑니다. 접근성 센터에서 '마우스를 사용하기 쉽게 설정'으로 들어갑니다. 여기서 '화면 가장자리로 이동할 때 창이 자동으로 배열되지 않도록 방지'의 체크를 풀어줍니다. 이렇게 체크를 풀어주면 윈도우 10에서 화면분할이 잘 됩니다. 화면 분할이 싫으신 분들은 체크상태로 하시면 됩니다. 예전엔 화면분할에 관한 설정을 따로 하지 않아도 되었는데, 이번에 포맷을 해보니 디폴트로 화면분할이 안되도록 되었나 봅니다. 왜 그런지는 모르겠네요. 저는 이 문제 때문에 .. 2018. 2. 12.
[자료구조]2진 트리 / 힙 정렬 2진 트리(Binary Tree) 2진 트리는 트리 구조 중에서 가장 기초이면서 간단한 트리 구조입니다. 또한 실제 많이 사용하는 트리 이기도 합니다. 2진 트리는 모든 노드가 최대 두 개의 자식 노드를 가지는 트리 자료 구조입니다. 이 두 자식 노드를 왼쪽 자식 노드와 오른쪽 자식 노드라고 하며, 원래의 노드를 이들의 부모 노드라고 합니다. 2진 트리는 2진 탐색 트리와 이진 힙의 구현에 흔히 쓰입니다. -출처 (위키 : 2진 트리) https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A7%84_%ED%8A%B8%EB%A6%AC 트리 용어 -노드(Node) 트리의 요소 하나하나를 나타내는 기본 원소를 의미합니다. -브랜치(Branch) 노드와 노드를 연결하는 연결선을 의미합니다.. 2018. 2. 7.
[visual studio]디버깅 디버깅 visual studio의 디버깅을 사용하면 프로그램의 코드를 한 줄 한 줄 실행하여 변수의 값 등을 확인할 수 있습니다. 디버깅의 전제조건으로는 프로그램의 빌드가 성공해야 합니다. 즉, F7 키를 통해 빌드를 실행하여 빌드가 성공하면 디버깅을 할 수 있습니다. 만약 빌드가 실패하며 디버깅을 할 수 없습니다. 단축키 -F9 커서가 있는 위치에 중단점(break point) 설정 / 해제 위에서 빨간색 네모 안에 커서가 위치하고 있습니다. 이렇게 커서가 위치하고 있는 위치에서 F9 키를 누르면 왼쪽에 빨간색 동그라미가 생기면서 중단점이 설정됩니다. 이렇게 중단점이 설정된 상태에서 한 번 더 F9 키를 누르면 중단점이 해제됩니다. 그리고 F9키가 아닌 마우스 좌클릭으로 빨간색 동그라미가 있는 곳에 클.. 2018. 2. 6.
[자료구조][C++]버블 정렬 버블 정렬 버블 정렬은 가장 큰 수를 맨 마지막으로 이동시키면서 정렬하는 방법입니다. 즉 메모리에 3 9 5 1 6 2 8 4 7 이렇게 저장되어 있다면 0번 index와 바로 그다음 index인 1번 index를 비교하여 앞의 index의 값이 더 크면 두 수를 swap 하고 아니면 그대로 둡니다. 그리고 비교 index의 값을 1씩 증가시켜 1번 index와 2번 index를 비교합니다. 이런 비교를 "배열의 길이 - 1" 만큼 반복하면 맨 마지막 index에 가장 큰 수가 위치하게 됩니다. 3 5 1 6 2 8 4 7 9 이렇게 가장 큰 수인 9가 맨 마지막 index에 위치하게 됩니다. (배열의 길이가 n이라고 가정) 이러한 비교를 또 "배열의 길이 - 1" 만큼 반복하면 되는데 한 번 수행할 때.. 2018. 2. 6.
[C++]Class의 기본 형태 Class의 기본 형태 class를 구현할 때 기본적인 모습은 다음과 같습니다. class C_DATA { private: ... public: C_DATA(); C_DATA(const C_DATA &) = delete; const C_DATA& operator=(const C_DATA &) = delete; virtual ~C_DATA();// class가 상속을 받는 다면 추가되어야할 내용 public: void init(); void release(); void setData(int nData); int getData(); }; 생성자는 기본적인 초기화 작업을 하며 이후 초기 값 세팅은 init() 함수를 따로 구현하여 사용합니다. 소멸자의 경우 아무 일도 하지 않도록 하며 굳이 정의하지 않아도 되.. 2018. 1. 30.