컴퓨터 기본 개념

    35강. 깊이 우선 탐색

    1) 깊이 우선 탐색(Depth First Search) - 탐색을 함에 있어서 보다 깊은 것을 우선적으로 하여 탐색하는 알고리즘 - 깊이 우선 탐색은 기본적으로 전체 노드를 맹목적으로 탐색하고자 할 때 사용한다. - 스택(Stack) 자료구조에 기초한다. - 모든 경우의 수를 탐색하고자 할 때 쉽게 사용할 수 있다. - 시간복잡도 : O(N) -> 정점의 갯수만큼 반복하기 때문에 탐색방법) - 1. 탐색 시작 노드를 스택에 삽입하고 방문처리를 한다. - 2. 스택의 최상단 노드에게 방문하지 않은 인접 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문처리를 한다. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. - 3. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다. #def..

    자료구조와 알고리즘 - 그래프 개념과 구현

    그래프란 ?사물의 정점과 간선으로 나타내기 위한 도구 1) 인접 행렬 : 2차원 배열을 사용하는 방식 2) 인접 리스트 : 리스트를 사용하는 방식 무방향 비가중치 그래프와 인접행렬 - 모든 간선이 방향성을 가지지 않고 단순히 연결만 되어있는 그래프를 무방향 그래프라고 한다. - 모든 간선에 가중치가 없는 그래프를 비가중치 그래프라고 한다. - 무방향 비가중치 그래프가 주어졌을 때 연결되어 있는 상황을 인접 행렬로 출력할 수 있다. 방향 가중치 그래프와 인접 리스트 - 모든 간선이 방향을 가지는 그래프를 방향 그래프라고 한다. - 모든 간선에 가중치가 있는 그래프를 가중치 그래프라고 한다. - 방향 가중치 그래프가 주어졌을 때 연결되어 있는 상황을 인접 리스트로 출력할 수 있다. ^^ 뮤슨소린지 하나도 모..

    33강. 탐색-순차 탐색과 이진 탐색

    - 특정한원소를 찾기 위해 순차적으로 하나씩 탐색하는 방법 - 데이터 정렬 유무에 상관없이 가장 앞에 있는 원소부터 하나씩 확인해야 한다 - 시간복잡도 : 0(N) - 배열 내부 데이터가 이미 정렬되어 있는 상황에서 사용 가능한 알고리즘 - 탐색범위를 절반씩 좁혀가며 데이터를 탐색하는 특징이 있음 - 한 번 확인할 때마다 보아야 하는 원소의 개수가 절반씩 줄어든다 - 퀵정렬과 비슷 - 시간복잡도 : 0(logN)

    13강. 컴퓨터가 변수를 처리하는 방법

    메모리에 적재(메모리 공간 있어야함) -> cpu가 메모리 읽어서 실행 1. 코드 - 한줄한줄씩 실행하는 소스코드 2. 데이터 - 전역변수, 정적변수 3. 힙영역 - 동적할당변수 4. 스택영역 - 함수마다 포함되어있는 지역변수, 매개변수 - 프로그램 어디서든 접근가능한 변수 - main함수가 실행되기도 전에 프로그램의 시작과 동시에 메모리에 할당 - 프로그램의 크기가 커질수로 전역변수로 인해 복잡해질 수 있음 - 메모리의 데이터 영역에 적재된다. - 특정한 블록에서만 접근할 수 있는 변수 - 함수가 실행될 때 마다 메모리에 할당되어 함수가 종료되면 메모리에서 삭제 - 메모리의 스택영역에 기록 - 특정한 블록에서만 접근할 수 있는 변수 - 프로그램이 실행될 때 메모리에 할당되어 프로그램이 종료되면 메모리에..

    10강. C언어_포인터

    포인터의 개념 1) 지금까지의 변수는 그 자체로 자신의 자료형에 맞는 값을 저장한다. 2) 포인터변수는 특이한 변수로, 메모리 주소를 저장한다. - 컴퓨터메모리에 바로 접근할 수 있게 해줌 - 특정한 메모리 주소를 가르킨다. - int *b = &a; --> *(간접참조연산자)는 포인터 변수임을 알려주기 위한 목적 --> &(주소연산자) : 변수 앞에 붙어서 변수의 메모리 시작 주소값을 구한다. - 포인터를 여러개 겹쳐 사용할 수 있다. - 배열은 포인터와 같다.(서로 상호 치환되어 사용할 수 있다.) - 포인터는 특정한 메모리 주소에 바로 접근할 수 있으므로 조심스럽게 사용해야한다.