반응형

분류 전체보기 51

sizeof 연산자와 변수 크기

sizeof 연산자와 변수 크기 메모리는 일반적으로 바이트(byte) 크기 단위로 구성되며, 각 단위는 고유한 주소를 가진다. 지금까지 메모리를 변수의 이름을 통해 정보를 넣고 가져올 수 있는 메일 박스처럼 생각했다. 그러나 변수는 보통 메모리를 1byte 이상 차지한다. 변수는 2byte, 4byte 또는 8byte 이상 연속적인 메모리 주소를 사용할 수 있다. 변수가 사용하는 메모리의 양은 자료형에 따라 다르다. 변수가 얼마나 많은 메모리를 차지하는지를 아는 것은 중요하다. 1. 변수가 더 많은 메모리를 차지할수록 더 많은 정보를 저장할 수 있다. 각 비트(bit)는 0 또는 1의 정보만을 가지기 때문에 1bit가 가질 수 있는 값의 경우의 수는 2개다. 2bit가 가질수 있는 값의 경우의 수는 4개..

C++ 문법 공부 2022.02.08

깊이 우선 탐색 (DFS)

깊이 우선 탐색(Depth First Search)은 탐색을 함에 있어서 보다 깊은 것을 우선적으로 하여 탐색하는 알고리즘이다. 이러한 깊이 우선 탐색은 맹목적으로 각 노드를 탐색할 때 주로 사용된다. 너비 우선 탐색(Breadth First Search)에서는 큐(Queue)가 사용되었다면 깊이 우선 탐색(Depth First Search)에서는 스택(Stack)이 사용된다. 더불어 스택을 사용하지 않아도 구현이 가능하다는 특징이 있다. 컴퓨터는 구조적으로 항상 스택의 원리를 사용하기 때문이다. DFS는 맨 처음에 시작 노드(Start Node)를 스택에 삽입하면서 시작한다. 또한 그와 동시에 시작 노드를 방문했다고 알리는 '방문 처리'를 해주도록 한다. 이제 DFS는 다음과 같은 간단한 알고리즘에 따..

알고리즘 공부 2022.02.08

너비 우선 탐색 (BFS)

너비 우선 탐색(Breadth First Search, BFS)은 탐색을 할 때 너비를 우선으로 하여 탐색을 수행하는 탐색 알고리즘이다. 최단 경로를 찾아준다는 점에서 최단 길이를 보장해야 할 때 많이 사용한다. 다음과 같이 큐와 그래프를 준비해보자. BFS는 맨 처음에 시작 노드(Start Node)를 큐에 삽입하면서 시작한다. 또한 시작 노드를 방문 했다고 '방문 처리'를 하늘색으로 해주도록 한다. 이제 BFS는 다음과 같은 간단한 알고리즘에 따라서 작동한다. 1. 큐에서 하나의 노드를 꺼낸다. 2. 해당 노드에 연결된 노드 중 방문하지 않은 노드를 방문하고, 차례대로 큐에 삽입한다. 1번과 2번을 계속해서 반복한다. 먼저 시작 노드 1을 큐에서 꺼낸다. 이렇게 처리 된 1은 가장 아래에 두고, 주변..

알고리즘 공부 2022.02.07

자료형과 변수 정의의 기본 (The basis of data type and variable definition)

메모리 주소 지정(Addressing memory) 변수란 '값을 저장하고 사용할 수 있는 메모리 조각' 이라고 하였다. 컴퓨터에는 프로그램에서 사용할 수 있는 RAM이 있다. 변수가 정의되면 메모리의 조각이 그 변수로 설정된다. 메모리의 가장 작은 단위는 0 또는 1의 값을 가지는 숫자 비트(bit)다. 비트는 꺼지거나(0) 켜지는(1) 전등 스위치처럼 생각할 수 있다. 임의의 메모리 세그먼트를 보면, 011001000111... 과 같은 세그먼트를 볼 수 있다. 메모리는 메모리 주소라고 하는 순차적인 단위로 구성된다. 택배원이 집 주소를 이용해 집을 찾는 것처럼 메모리 주소를 이용해 특정 위치의 메모리 내용에 접근할 수 있다. 현대 컴퓨터에서 일반적으로 가장 작은 메모리 단위는 8비트로 구성된 바이트..

C++ 문법 공부 2022.02.07

큐(Queue)

큐(Queue)는 대표적인 FIFO(First In First Out) 구조이다. 따라서 제일 처음에 넣은 데이터가 처음으로 빠져나온다. 큐의 기본 함수에는 push, pop, empty, front, back, swap 등이 있다. 스택(Stack)과 달리 front 원소와 back 원소에 접근할 수 있다는 특징이 있다. Queue STL을 사용하려면 헤더파일을 포함해야 한다. queue 이름; 으로 queue를 선언한다. #include queue q; [Queue 기본 함수] (1) Add Data in Queue Queue.push(data) 형태로 데이터를 추가한다. queue.push(element) (2) Delete Data in Queue Queue.pop() 형태로 Queue의 fron..

알고리즘 공부 2022.02.05

스택(Stack)

스택(Stack)은 대표적인 LIFO(Last In First Out) 구조이다. 따라서 제일 마지막에 넣은 데이터가 처음으로 빠져나오는 것을 볼 수 있다. 스택의 기본함수에는 push, pop, empty, top, swap 등이 있다. stack STL을 사용하기 위해서는#include 헤더파일을 포함해야 한다 . stack 이름 ; 으로 stack을 선언한다. #include stack stack; [스택 기본 함수] (1) Stack에 데이터 추가하기 Stack이름.push(데이터) 형태로 데이터를 추가한다. stack.push(element) (2) Stack에 데이터 삭제하기 Stack이름.pop(데이터) 형태로 Stack의 top 데이터를 삭제한다. stack.pop() (3) Stack의 ..

알고리즘 공부 2022.02.04

C++ 전처리기(preprocessor)

전처리기(preprocessor) 전처리기(preprocessor)는 프로그램을 컴파일할 때 컴파일 직전에 실행되는 별도의 프로그램이다. 전처리기가 실행되면 각 코드 파일에서 지시자(directives)를 찾는다. 지시자(directives)는 #으로 시작해서 줄 바꿈으로 끝나는 코드다. 전처리기는 컴파일러가 실행되기 직전에 단순히 텍스트를 조작하는 치환 역할을 하기도 하고, 디버깅에도 도움을 주며 헤더 파일의 중복 포함도 방지해주는 기능을 가진다. Include 이전에 #include 지시자를 보았다. #include를 하면 전처리기(preprocessor)는 포함(include)된 파일의 내용을 지시자의 위치에 복사한다. [전방 선언(forward declaration)에 사용했었다.] #includ..

C++ 문법 공부 2022.02.04
반응형