반응형 C++48 LV2 C++ 동적 할당(Dynamic Allocation) [lv2/C++] 동적 할당(Dynamic Allocation) C와 C++에서는 포인터를 사용하여 메모리를 직접 관리할 수 있다. 앞에서 설명한 것과 같이 포인터는 메모리상의 주소를 가리키고 있는데 포인터를 이용하여 런타임(프로그램이 실행되는 동안)시 이름이 없는 메모리를 할당할 수 있다. C에서는 malloc()과 free()함수를 통하여 메모리를 할당하거나 해제할 수 있지만 C++에서는 new와 delete연산자를 통해 메모리를 관리할 수 있다. 물론 C++은 C를 기반으로 하기 때문에 malloc()과 같은 함수도 사용이 가능하지만 이번에는 new와 delete를 이용한 동적 메모리 할당과 해제를 할 것이다. 기본 형식은 다음과 같다.typeName *pointerName = new typeNam.. 2022. 9. 8. LV2 C++ 포인터(Pointer) 사용 [lv2/C++] 포인터(Pointer) 사용 포인터가 어떤 동작을 하는지 이해가 되었다는 가정하에 글을 작성하겠다.포인터를 처음 접하는 사람이라면 이전 글을 읽어본 후 이 글을 읽길 바란다.[lv2/C++] 포인터 Pointer 우리는 변수가 메모리상 어딘가에 저장되고 주소를 가지고 있다는 것을 알았다. 컴퓨터마다, 실행할 때 마다 주소가 바뀌지만 우리는 포인터를 이용해 주소에 접근하고 그 공간에 있는 값을 사용할 수 있다. 그렇다면 메모리 안에서 변수들이 갖는 크기는 얼마나 될까? 데이터 형식(자료형)에 따라 크기를 할당 받는 것을 배우고 sizeof()를 통해 알아볼 수도 있지만 실제 메모리 상 주소 간격에 따른 차이를 확인해 보자. 자료형에 따른 주소 간격 출력#include using names.. 2022. 9. 8. LV2 C++ 포인터 Pointer [lv2/C++] 포인터 Pointer Pointer라는 단어를 사전에서 찾아보면 '가리키는 것'이라는 의미가 나올 것이다. 이 의미처럼 프로그래밍 언어에서 포인터는 메모리 공간에 저장된 변수의 주소를 가리키는 변수를 말한다. 비유를 통해 좀 더 쉽게 접근해 보자면 우리는 모두 '집'이라는 곳에 살고있다. 집은 각각 위치를 나타내는 유일무이한 '주소'를 가지고 있으며 이 주소는 중복되지 않고 단 하나의 집만을 가리킨다. 그 공간에 살고 있는 우리는 자기 자신이 살고있는 주소를 알고있으며 그 공간안에 어떤 '물건'들이 있는지 확인할 수 있다. 여기서 '물건'은 메모리 공간 안에 있는 '값'에 비유하고, '주소'는 변수가 저장된 메모리의 '주소'이며, '집'은 메모리의 '공간'을 뜻한다. 이 때 '우리'는 .. 2022. 9. 6. LV1 C++ 데이터 형식(자료형) 종류와 범위 [lv1/C++] 데이터 형식(자료형) 종류와 범위개인용 컴퓨터가 귀하던 시절에는 저장용량이 매우 작아 프로그램 구현 시 사용되는 공간의 효율때문에 자료형의 크기가 매우 중요하였다. 하지만 현대 시대에서 컴퓨터의 저장용량이 기하급수적으로 증가함에 따라 프로그램 구현에서 자료형의 크기 중요도는 많이 낮아는데 그럼에도 불구하고 자료형은 가독성, 처리속도, 값의 범위, 효율성 등 여러가지 이유로 간과해서는 안될 부분이라고 생각한다. 우리는 항상 컴퓨터가 똑똑한다고 말하지만 컴퓨터는 0과 1밖에 모르는 멍청이 라는 것을 집고 넘어가야한다. 컴퓨터는 무수한 0과 1로 이루어진 데이터의 집합체이다. 0과 1을 표현할 수 있는 데이터의 최소 단위를 Bit(Binary Digit)라고 하고 8개의 Bit가 모여 1B.. 2022. 9. 6. LV1 C++ 배열 Array 정리 [lv1/C++] 배열 Array 정리 배열배열(Array)은 연속된 공간에 같은 자료형의 데이터를 모아놓은 것이다.배열은 대부분의 프로그래밍 언어에서 사용할 수 있는 가장 기초적인 자료 구조이다. 배열의 선언 방법배열의 선언 방법은 배열의 이름 뒤에 대괄호("[ ]")를 이용하여 배열의 크기를 지정한다.배열의 크기는 연속된 공간에 들어갈 요소들의 개수를 의미하며 값이 정해져있는 상수나 식을 사용할 수 있다. (변수는 사용할 수 없다.)배열의 각각 요소에 접근하기 위해서는 인덱스(index, 첨자)를 사용하는데 이 때 배열의 인덱스는 0부터 시작되는 숫자이다. 예를 들어서 배열의 크기를 '5'로 지정했을 때 인덱스는 0, 1, 2, 3, 4 로 5개의 공간이 만들어지는 것이다. 배열의 선언 및 초기화배열.. 2022. 9. 6. LV1 C++ 반복문 while, do - while [lv1/C++] 반복문 while, do ~ while whilewhile문은 조건식이 참인 경우에만 내용을 반복한다.for문과 비교하면 초기값, 반복식에 해당하는 부분이 없다.그래서 초기값과 반복식에 해당하는 문장이 while문 내에 있어야 반복과 중단이 가능하다.while의 기본 구문은 다음과 같다.while (조건식){ 반복 내용;} do~whilewhile문은 조건을 먼저 판단한 다음에 참인 경우 반복할 내용을 실행 하지만do~while문은 while문과 다르게 반복 내용을 무조건 한 번 실행 시킨 후 조건을 판단하여 반복 여부를 결정하고, 조건식 다음에는 세미콜론(;)을 붙인다.do~while의 기본 구문은 다음과 같다do{ 반복 내용;}while(조건식); 1부터 10까지 더하는 프로그램을 .. 2022. 9. 2. LV1 C++ 반복문 for문 [lv1/C++] 반복문 for문 for문은 반복 횟수가 정해져 있는 형태가 주로 사용된다.물론 무한루프를 구현할 때도 사용하긴 하지만 또다른 형태의 반복문과 함께 작성하는 사람이 좀더 편하고 익숙한 방식으로 사용된다. 기본적인 구조는 다음과 같다.for((1)초기값;(2)조건식;(3)반복식){ (4)반복할 문장;}* (1) 초기 값 : 최초 한 번만 실행되는 초기화 과정으로 보통 반복을 제어하는 변수의 초기값을 설정한다.* (2) 조건식 : 반복을 빠져나오기 위한 조건으로 반복을 할 때마다 조사한다. 조건식이 참인 경우 계속 반복하고 거짓인 경우 반복을 그만하고 for문을 빠져 나간다.* (3) 반복식 : 일반적으로 반복을 제어하는 변수의 값을 증가 또는 감소시키는 식(증감식)이 들어간다.* (4) 반.. 2022. 9. 2. LV1 C++ 조건문 (선택문) switch case문 [lv1/C++] 조건문 (선택문) switch ~ case문 switch ~ case 문은 정수 값이나 문자 등을 이용한 조건 판단에 이용한다.if문과 함께 조건문에 해당되지만 switch문의 조건식에는 >, >=, 대신 switch 문의 조건식에는 결과값을 가지고 있는 변수 등이 들어가고 동등한 결과값을 가진 case를 찾게 된다. switch ~ case문의 기본 형태는 다음과 같다.switch (조건식) { case 값1 : 문장; break; case 값2 : 문장; break; case 값3 : 문장; break; default : 문장; break;}switch ~ case문에서 중요한 것은 'break;' 명령이.. 2022. 9. 2. LV1 C++ 조건문 if, else if, else [lv1/C++] 조건문 if, else if, else 조건문이란 조건을 판단하여 참과 거짓 여부에 따라 프로그램 처리 방향을 변경하는데 사용한다. 여기서 조건이란 참과 거짓을 판단할 수 있는 것을 말한다.현실 세계에서는 3은 10보다 작은가, 사과는 과일인가 처럼 명확히 답을 내릴 수 있는 것들이다.이처럼 프로그램에서도 참과 거짓을 판단할 수 있도록 조건식을 작성해야 한다. 조건문 중 제일 흔하게 쓰이는 것은 if문이다.사전에 찾아보면 알 수 있듯이 if는 '만약에'라는 뜻을 가진다.만약에 (조건문) 이 참이라면 이 문장을 실행한다.만약에 (조건문) 이 거짓이라면 이 문장을 실행하지 않는다. if문에는 여러가지 형식이 있지만 제일 기본적인 형식은 아래와 같다.if(조건식) { 문장;}조건식이 참일 때.. 2022. 9. 2. C++ BAEKJOON 15552번 빠른 A+B [C++] BAEKJOON 15552번 : 빠른 A+B 방법 1 : C 표준 입출력 stdio.h 쓰기C언어의 표준 입출력 scanf()와 printf() 사용해당 입출력은 매우 빠른편이다. 방법 2 : iostream의 default 설정을 수정1. C++와 C 표준 스트림의 동기화 해제 : ios_base::sync_with_stdio(false);를 추가2. 입력과 출력 연결을 끊어주기 : cin.tie(NULL);#include using namespace std;int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; int a, b; cin >> n; for (int i = 0; i > a.. 2022. 8. 17. C++ BAEKJOON 25304번 영수증 [C++] BAEKJOON 25304번 : 영수증 #include using namespace std;int main(){ ios_base::sync_with_stdio(false); //cin.tie(NULL); int x, n, a, b, sum = 0; cin >> x >> n; for (int i = 0; i > a >> b; sum += a * b; } if (x == sum) { cout 2022. 8. 17. C++ BAEKJOON 8393번 합 [C++] BAEKJOON 8393번 : 합 #include using namespace std;int main(){ int n; int sum = 0; cin >> n; for (int i = 1; i 2022. 8. 17. 이전 1 2 3 4 다음 반응형