본문 바로가기

main70

[C++]friend 키워드 friend 키워드 friend 키워드는 그 뜻이 '친구'라는 뜻과 마찬가지로 class와 class 간에 친구(friend) 관계를 형성할 수 있도록 합니다. A class와 B class 있고, 둘 다 private 멤버를 가지고 있다면 이 private 멤버는 외부에서 직접 접근할 수 없습니다. 그러나 A class에서 B class를 friend 키워드를 통해 친구로 지정하면 B class는 A class의 private 멤버에 직접 접근이 가능해집니다. 하지만 A class는 B class의 private멤버에 직접 접근이 불가능합니다. A class가 B class의 private 멤버에 직접 접근하려면 B class에서 A class를 친구로 지정해야 합니다. 조금 헷갈리실 수 있는데, 쉽게.. 2018. 2. 21.
[자료구조]이진 탐색(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.