본문 바로가기

전체 글71

[자료구조]이진 탐색(Binary Search) 이진 탐색 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘입니다. 처음 중간의 값을 임의의 값으로 선택하여, 그 값과 찾고자 하는 값을 비교하는 방식입니다. 선택한 중앙값을 기준으로 찾고자 하는 값보다 크다면 기준의 왼쪽 범위에서, 찾고자 하는 값보다 작다면 기준의 오른쪽 범위에서 다시 중앙값을 선택하여 반복합니다. 이진 탐색 과정을 그림으로 보자면 다음과 같습니다. 위 그림에서 보면 길이가 10인 리스트에 { 0,2,4,6,8,10,12,14,16,18 } 값이 정렬되어 저장되어 있고, 여기서 12를 찾는 과정입니다. 처음에 중앙값, (length / 2)인 5를 기준으로 합니다. 리스트의 5번 index의 값을 기준으로 하는 겁니다. 리스트의 5번 index의 값은 10으로 찾고자 하.. 2018. 2. 14.
[자료구조]합병 정렬(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.