본문 바로가기

전체 글339

1. 그래프 기초 그래프란? 그래프는 현실 세계의 사물이나 추상적인 개념 간 연결 관계를 표현함 정점 : 각각의 데이터를 표현 간선 : 정점들을 연결하는 선 그래프는 연결 개수에 제한이 없다. (연결리스트의 노드와 비교했을 때) 도로, 소셜 네트워크 등 활용 범위가 무궁무진함 가중치 그래프란? 연결관계 뿐만 아니라 가중치를 주어 이동 간 비용을 표시 방향 그래프란? 말 그대로 방향이 있는 그래프다. 두 사람 사이의 호감도 같은 것 그래프의 구현 방법 1 void CreateGraph_1() { struct Vertex { vector edges; }; vector v; v.resize(6); v[0].edges.push_back(&v[1]); v[0].edges.push_back(&v[3]); v[1].edges.push.. 2022. 9. 17.
5-1. Virtual Address Space 가상 메모리 물리 메모리 (RAM)는 한정적이고 비싸기 때문에 HDD를 사용한다. 필요할 때는 HDD에서 물리 메모리로 다시 불러온다. (보관 -> 복구를 반복) HDD 안에 물리 메모리를 보관하는 공간을 페이징 파일이라고 한다. 가상 메모리는 실제 설치된 물리 메모리보다 더 큰 공간을 사용할 수 있다. Physics Storage란? => 물리 메모리 + 페이징 파일 => 실행 파일과 DLL을 일컫는다. 페이지 운영체제가 메모리를 관리할 때 사용하는 최소 단위 CPU별로 크기가 다르다 ( 인텔 CPU는 32/64bit 모두 4K ) 메모리를 관리할 때 페이지 단위로 관리한다. 예를 들어 10바이트 메모리를 요청하면 OS는 4K (1페이지) 를 할당한다. malloc 같은 메모리 할당 함수들이 할당받는 .. 2022. 9. 16.
3장-6. 재귀 함수 선형 재귀 재귀의 가장 간단한 형태 호출이 발생할 때 최대 하나의 재귀호출이 발생함 #include int LinearSum(int* arr, int n) { if (n == 1) return arr[0]; else return LinearSum(arr, n - 1) + arr[n - 1]; } int main() { int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int sum = LinearSum(arr, 10); std::cout end의 상황에 도달하게 되기 때문 후미 재귀 재귀 함수를 사용할 때는 성능도 생각해야 한다. 컴퓨터 메모리가 부족할 때는 재귀 알고리즘에서 비재귀 알고리즘을 이끌어내야 함 void iterativeReverseArray(int* a.. 2022. 9. 16.
CPP_1. AssortRock 7일차 오프라인 수업_220915 프로그래밍 공부에 대한 이야기 보통 공부의 경우 이해를 하고 문제를 풀면서 연습한다 코딩의 경우 이해가 안될 경우 조금씩 실습하면서 이해하는 과정이 필요하다. 이해하는 과정을 겪고 다시 보면 이해가 됨 숙제에 관한 이야기 이제 숙제 기존 4개에서 2개씩 올라감 숙제의 난이도도 올라가고 수업 내용을 따라가는 것도 어려워졌으므로. 링크드리스트 숙제 노드 삽입 로직에 리스트가 비어있을 때와 마지막 요소에 집어넣을 때 에러 발생 그 에러를 처리할 수 있도록 로직 구현 클래스에 대한 내용 링크드리스트를 구조체로 짜보니 불편한 점이 있다. 링크드리스트 노드 삽입, 삭제 함수를 따로 만들어줘야 한다는 것 이것을 올인원느낌으로 한 곳에 때려박는게 클래스 클래스와 구조체의 가장 큰 차이는 접근제한 지시자 (클래스는 de.. 2022. 9. 16.