분류 전체보기(1142)
-
IP 주소와 서브넷 마스크
IP 주소는 범위에 따라서 A, B, C, D, E 클래스로 나누게 된다 1) A 클래스 : 맨 앞에 비트가 '0'인 공통 비트 클래스 0 0000000. - 0 1111111. (0 ~ 127) 2) B 클래스 : 맨 앞에 비트가 '10'인 공통 비트 클래스 10 000000. - 10 111111. (128 ~ 191) 3) C 클래스 : 맨 앞에 비트가 '110'인 공통 비트 클래스 110 00000. - 110 11111 (192 ~ 223) [출처] https://www.youtube.com/watch?v=Xiv0f0V3CsA 서브넷 마스크는 쉽게 말해서 클래스 호스트부의 일부분은 네트워크로 변환시키는 것이다. 서브넷이 필요한 이유는 1) 브로드캐스트 초과 발생을 막아서 통신 오류를 방지한다 2..
2019.10.12 -
C6011: NULL 포인터 'var'을 역참조하고 있습니다 에러 해결
해당 오류는 malloc과 연관되어 있다. 만일 Node *node = (Node *)malloc(sizeof(Node))가 실패한다면 node는 NULL 포인터를 갖게 된다. 따라서 NULL 포인터의 변수를 참조해서 초기화하는 경우가 생길 수 있다 따라서 이를 방지하고자 visual studio에서 경고차원으로 넣은 것이다. 이를 해결하기 위해서는 node가 null인지 아닌지 검사하는 코드가 포함되어야만 한다 Node *initNode(int data, Node* leftChild, Node* rightChild) { Node* node = (Node*)malloc(sizeof(Node)); if (node != NULL) { node->data = data; node->leftChild = left..
2019.10.12 -
기수 정렬 Radix sort
기수 정렬은 자릿수를 기준으로 차례대로 데이터를 정렬하는 알고리즘이다. 데이터가 총 N개가 있고, 데이터 중 최대 자릿수가 D라고 할 때, 시간복잡도 O(DN)을 가지게 된다. 계수 정렬과 달리 자릿수가 큰 데이터에 대해서도 정렬이 가능하다. 하지만 조금은 느리다는 특징은 있다 단점은 계수 정렬과 마찬가지로 -값이 있을 때는 인덱스를 옮기는 수고를 해야한다
2019.10.12 -
우선순위 큐 정렬 - 2
https://noel-embedded.tistory.com/495 기존 priority_queue STL 세번째 인자인 class Compare = std::less 함수를 만들기 위해서 cmp 클래스를 만들고, 그 안에 연산자를 만들어서 오버로딩을 했다. 이는 다양한 연산자 오버로딩을 구분할 수 있어서 좋다 하지만 하나의 연산자만 구현한다면 클래스 없이
2019.10.10 -
퀵 소트 재귀 호출없이 구현하기
재귀의 장점은 프로그램이 간결하다는 장점이 있지만, 스택 메모리 오버플로우 가능성이 존재한다는 점과 프로그램 가독성이 떨어진다는 단점이 있다 [참고] https://www.geeksforgeeks.org/iterative-quick-sort/ 재귀함수는 비재귀함수는 for, while 반복문으로 짤 수 있다. 퀵 소트를 구현하기 위해서는 quicksort 함수를 재귀함수로 이용했는데 stack 자료구조를 이용해 partition의 반환값을 비교해 아직 부분집합의 크기가 1보다 크다면 stack에 넣어 반복문을 수행시킬 수 있다 stack STL을 사용하는 것은 느리다. 배열로 대체하도록 한다
2019.10.10 -
정렬 알고리즘이 다양한 이유
위와 같이 알려진 정렬 알고리즘은 무수히 많다. 이 정렬 알고리즘을 모두 알면 좋겠지만, 나눠진 이유와 이에 맞춰 사용해야할 정렬 알고리즘을 적절히 판단해야만 한다 1) 정렬이 수행되는 시간복잡도가 다르다. 시간복잡도가 매번 평균 시간복잡도로 나오진 않지만 대체적으로 빠른 것과 느린 것이 있다. 데이터 양이 작다면 시간복잡도를 크게 고려할 필요가 없기 때문에, 코드가 짧은 bubble sort, selection sort, insertion sort가 있다. 반대로 데이터 양이 크다면 시간복잡도를 고려해야하기 때문에 코드가 길지만 merge sort, quick sort를 구현해야만 한다 2) 속도가 아닌 공간복잡도를 고려해야할 수 있다. merge sort는 NlogN의 빠른 알고리즘이지만 분할 정렬된..
2019.10.10