전체 글
15강. 동적메모리할당
- 일반적으로 C언어에서 배열의 경우 사전에 적절한 크기만큼 할당해주어야 한다. - 우리가 원하는 만큼만 메모리를 할당해서 사용하고자 한다면 동적 메모리 할당을 사용한다. - 동적이라는 말의 의미는 '프로그램 실행 도중에' 라는 의미이다. - 동적메모리 할당을 수행할 때마다 할당되는 포인터의 주소는 변칙적이다. - 동적으로 할당된 변수는 에 저장된다. 1) C언어에서는 malloc() 함수를 이용해 원하는 만큼의 메모리 공간을 확보할 수 있다. 2) malloc() 함수는 메모리 할당에 성공하면 주소를 반환하고, 그렇지 않으면 NULL을 반환한다. 3) malloc() 함수는 라이브러리에 정의되어 있다. ex) malloc(할당할 바이트 크기); #include #include int main(void)..
35강. 깊이 우선 탐색
1) 깊이 우선 탐색(Depth First Search) - 탐색을 함에 있어서 보다 깊은 것을 우선적으로 하여 탐색하는 알고리즘 - 깊이 우선 탐색은 기본적으로 전체 노드를 맹목적으로 탐색하고자 할 때 사용한다. - 스택(Stack) 자료구조에 기초한다. - 모든 경우의 수를 탐색하고자 할 때 쉽게 사용할 수 있다. - 시간복잡도 : O(N) -> 정점의 갯수만큼 반복하기 때문에 탐색방법) - 1. 탐색 시작 노드를 스택에 삽입하고 방문처리를 한다. - 2. 스택의 최상단 노드에게 방문하지 않은 인접 노드가 하나라도 있으면 그 노드를 스택에 넣고 방문처리를 한다. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. - 3. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다. #def..
Sub Query 연습 & MariaDB연동 & 팟빵 크롤링
1. SubQuery연습 - 쿼리문 실행 순서(from -> group by -> select)상 select에서 쓴 alias를 group by 에서 사용하지 못하지만 MariaDB에서는 사용할 수 있도록 처리를 해준다. - 데이블생성 및 데이터 추가 쿼리 drop table IF EXISTs emp; drop table IF EXISTs dept; # DML start CREATE TABLE dept ( deptno int NOT NULL AUTO_INCREMENT, dname varchar(20) , loc varchar(20) , CONSTRAINT pk_dept PRIMARY KEY ( deptno ) ); CREATE TABLE emp ( empno int NOT NULL AUTO_INCREM..
[python] 프로그래머스 > level1 > 문자열 내림차순으로 배치하기
1. 입력받는 s를 list()함수로 변환시킨다. 2. 리스트로 변경한 값을 sort를 통해 내림차순 한다. 3. 반환된 함수를 "".join()함수를 통해 문자열로 합친다.(만약 ",".join()으로 하면 d,c,b,a 와 같이 구분자와 함께 리턴될 것이다.) 1. Sorted만 했을 경우 list로반환되지 때문에 문자열로 변환시키기 위해 "".join()을 하는 것인가?
자료구조와 알고리즘 - 그래프 개념과 구현
그래프란 ?사물의 정점과 간선으로 나타내기 위한 도구 1) 인접 행렬 : 2차원 배열을 사용하는 방식 2) 인접 리스트 : 리스트를 사용하는 방식 무방향 비가중치 그래프와 인접행렬 - 모든 간선이 방향성을 가지지 않고 단순히 연결만 되어있는 그래프를 무방향 그래프라고 한다. - 모든 간선에 가중치가 없는 그래프를 비가중치 그래프라고 한다. - 무방향 비가중치 그래프가 주어졌을 때 연결되어 있는 상황을 인접 행렬로 출력할 수 있다. 방향 가중치 그래프와 인접 리스트 - 모든 간선이 방향을 가지는 그래프를 방향 그래프라고 한다. - 모든 간선에 가중치가 있는 그래프를 가중치 그래프라고 한다. - 방향 가중치 그래프가 주어졌을 때 연결되어 있는 상황을 인접 리스트로 출력할 수 있다. ^^ 뮤슨소린지 하나도 모..
33강. 탐색-순차 탐색과 이진 탐색
- 특정한원소를 찾기 위해 순차적으로 하나씩 탐색하는 방법 - 데이터 정렬 유무에 상관없이 가장 앞에 있는 원소부터 하나씩 확인해야 한다 - 시간복잡도 : 0(N) - 배열 내부 데이터가 이미 정렬되어 있는 상황에서 사용 가능한 알고리즘 - 탐색범위를 절반씩 좁혀가며 데이터를 탐색하는 특징이 있음 - 한 번 확인할 때마다 보아야 하는 원소의 개수가 절반씩 줄어든다 - 퀵정렬과 비슷 - 시간복잡도 : 0(logN)
13강. 컴퓨터가 변수를 처리하는 방법
메모리에 적재(메모리 공간 있어야함) -> cpu가 메모리 읽어서 실행 1. 코드 - 한줄한줄씩 실행하는 소스코드 2. 데이터 - 전역변수, 정적변수 3. 힙영역 - 동적할당변수 4. 스택영역 - 함수마다 포함되어있는 지역변수, 매개변수 - 프로그램 어디서든 접근가능한 변수 - main함수가 실행되기도 전에 프로그램의 시작과 동시에 메모리에 할당 - 프로그램의 크기가 커질수로 전역변수로 인해 복잡해질 수 있음 - 메모리의 데이터 영역에 적재된다. - 특정한 블록에서만 접근할 수 있는 변수 - 함수가 실행될 때 마다 메모리에 할당되어 함수가 종료되면 메모리에서 삭제 - 메모리의 스택영역에 기록 - 특정한 블록에서만 접근할 수 있는 변수 - 프로그램이 실행될 때 메모리에 할당되어 프로그램이 종료되면 메모리에..
10강. C언어_포인터
포인터의 개념 1) 지금까지의 변수는 그 자체로 자신의 자료형에 맞는 값을 저장한다. 2) 포인터변수는 특이한 변수로, 메모리 주소를 저장한다. - 컴퓨터메모리에 바로 접근할 수 있게 해줌 - 특정한 메모리 주소를 가르킨다. - int *b = &a; --> *(간접참조연산자)는 포인터 변수임을 알려주기 위한 목적 --> &(주소연산자) : 변수 앞에 붙어서 변수의 메모리 시작 주소값을 구한다. - 포인터를 여러개 겹쳐 사용할 수 있다. - 배열은 포인터와 같다.(서로 상호 치환되어 사용할 수 있다.) - 포인터는 특정한 메모리 주소에 바로 접근할 수 있으므로 조심스럽게 사용해야한다.