반응형

IT 프로그래밍 376

[c++] 백준 2738번 : 행렬 덧셈

문제  문제코드#include #include #include using namespace std;int arr[101][101], arr2[101][101];int main(){ int N, M; cin >> N >> M; for (int i = 0; i > arr[i][k]; } } for (int i = 0; i > arr2[i][k]; } } for (int i = 0; i  문제설명이중 for문을 통해 2차원 배열의 연산이 가능해집니다. int arr[101][101], arr2[101][101];두 개의 행렬 arr과 arr2를 선언합니다. 최대 크기는 101 x 101이 됩니다. for (int i = 0; i > arr[i][k]; }}첫 번째 행렬 arr의 원소를 이중 for문을..

[C++] 25206번 너의 평점은

문제전공 학점: 학점 * 과목 평점전공 학점 평균: 전공 학점 / 총 학점P 과목은 제외 따라서 전공 학점들을 계산하여 모두 더한 후 총 학점으로 나눠주면 문제를 해결하면 된다.정답코드#include #include #include using namespace std;int main(){ float count = 0; float sum = 0; string grade[9] = { "A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F" }; for(int i =0; i> x >> y >> z; if (z == "P") { continue; } count += y; if (z == "F") { continue; } float num = 5.0; ..

동적 메모리와 스마트 포인터

동적메모리 C++에서 NEW와 DELETE를 이용하여 동적 메모리를 관리합니다. 동적 메모리를 실수 없이 관리하는 것은 생각보다 까다롭습니다. 용도가 다한 동적 객체를 반환하지 않으면 쓰레기(garbage)가 생성되어 메모리 누수(memory leak)가 발생하고, 객체를 가리키는 포인터가 존재하는데 객체를 삭제하면 유효하지 않은 주소를 가지는 포인터가 생길 수 있습니다.  스마트 포인터 c++은 동적 메모리를 쉽고 안전하게 사용할 수 있도록 3종류의 스마트 포인터를 제공합니다. shared_ptr은 다수의 포인터가 하나의 객체를 가리키는 것을 허용합니다.unique_ptr은 가리키는 객체를 온전히 소유한다.weak_ptr은 shared_ptr이 가리키는 객체에 대한 weak reference를 제공한다..

[c++]백준 1076번 저항

문제 링크 : https://www.acmicpc.net/problem/1076코드#include #include #include using namespace std;int main(){ string color[10] = { "black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "grey", "white" }; string n; int mem[3]; long long r = 0; for (int i = 0; i > n; for (int j = 0; j 문제풀이해당 식은 간단하게 문제를 따라서 풀면 나옵니다.* 결과값이 int 범위를 넘어가기 때문에 r을 long long으로 뒀습니다.* pow함수를 써야하기 때문에 #includ..

[C++] 백준 1094번 : 막대기

#include #include #include #define N 8using namespace std;int main(){ int x = 0; cin >> x; string binary = bitset(x).to_string(); int count = 0; for (int i = 0; i 문제 문제코드#include #include #include #define N 8using namespace std;int main(){ int x = 0; cin >> x; string binary = bitset(x).to_string(); int count = 0; for (int i = 0; i  문제풀이해당 문제는 Bitset을 알아야 풀 수 있는 문제입니다. 먼저 처음에 64cm를 가지고 있고 이후 계속 절..

c++ 포인터 설명

int main(){ using namespace std; int array[5] = { 9, 7, 5, 3, 1 }; cout 여기서 알 수 있듯이 array는 포인터입니다. 이렇게 array 하나만 입력하면 주소가 나오며 이는 &array[0] 참조를 이용할 때도 같은 값이 나오는 것을 볼 수 있습니다. cout 이렇게 해주면 array[0]의 값인 9가 나옵니다. char name[] = "JackJack";cout 이 경우에는 J가 나옵니다. 정적 array 또한 포인터라는 것을 알 수 있습니다.

[c++]포인터와 참조 설명

int main(){ int value = 5; int& ref = value; cout 참조는 별명처럼 사용할 수 있습니다. value의 또다른 이름으로 간주하고 사용할 수 있는 것인데요. #include #include using namespace std;int main(){ int value = 5; int* ptr = nullptr; ptr = &value; int& ref = value; cout 포인터의 주소는 value의 주소와 똑같은 것을 볼 수 있습니다. 하지만 포인터 자체의 주소를 치면 다른 것을 볼 수 있는데요. 이것에서 포인트도 변수라는 사실을 알 수 있습니다.  int& ref;이렇게는 불가능합니다. 참조가 별명같은 느낌인데 원래 이름이 없다면 별명도 지을 수 없겠죠? 원래 이..

[따배시 6.12] 동적 할당 배열

int main(){ int length = 5; int array[length]; return 0;}배열은 고정이 되어 있어야 가능한데요.이런 식으로는 불가능합니다. int main(){ const int length = 5; int array[length]; return 0;}이런 식으로 const를 해주면 정상적으로 작동하게 됩니다. 이것을 동적 배열이 가능하도록 바꿔보겠습니다. delete[] array;긴 사이즈  (배열) 등의 new를 제거할 때는 []를 써줘야 합니다. #include #include using namespace std;int main(){ int length; cin >> length; int* array = new int[length]; array[0] = 1; array..

[따배시 6.11] 메모리 동적할당 new 와 delete, 메모리누수

정적 메모리 할당 / stack int array[1000000]; //stack이렇게 선언해주는 것, 우리가 일반적으로 쓰는 코드가 바로 정적메모리입니다. 이런 정적 메모리 할당은 stack에 들어가며 이것은 용량이 그렇게 크지는 않은데요. 동적 메모리 할당 / heap new int;new int는 os에 4바이트 만큼 가져오면서 그 주소를 가져오는 것입니다. 그렇기 때문에 포인터로 받아야 하는데요.int* ptr = new int;*ptr = 7;이런식으로 해줄 수 있는 겁니다. 배열 동적할당을 해주면 장점이 많이 생기기 때문에 이 동적 메모리 할당을 하는 것인데요. 이런식으로 os로부터 4바이트를 가져와서 할당을 해주는 것을 기억해주셔야 합니다. 할당하면서 초기화를 해줄 수 있는데요.int mai..

[따배시 8.4] 생성자 멤버 초기화 목록

public: Something() { m_i = 1; m_d = 3.14; m_c = 'a'; }이런 식으로 생성자를 만들어줄 수도 있지만 더 간편한 방법이 존재합니다. initialize list라고 말합니다. public: Something() : m_i(1), m_d(3.14), m_c('a') {}이런식으로 써도 똑같은 방식이며 실전에서는 이러한 방식을 주로 사용할 것입니다.  전체 코드#include using namespace std;class Something{private: int m_i; double m_d; char m_c;public: Something() : m_i(1), m_d(3.14), m_c('a') {} void print() { cout 이런 식으로 써줄 수 ..

반응형