반응형

IT 프로그래밍 376

[c++] 상속받은 함수를 오버라이딩 하기

#include using namespace std;class Base{protected: int m_i;public: Base(int value) : m_i(value) {} void print() { cout   cout (b)이렇게 해주면 위에 있는 operator  상속받은 함수를 감추기using Base::m_i; 이것을 Derived에 넣어주면 m_i가 Derived안에서 public이 되어 버립니다. 이것이 상속된 유도 클래스에서 바꿀 수도 있습니다. class Derived : public Base{private: double m_d;public: Derived(int value) : Base(value) {} using Base::m_i;};이렇게 사용해주면 되는 것입니다. 그러면 ..

[c++] 따배시 상속과 접근 지정자

class Base{public: int m_public;protected: int m_protected;private: int m_private;};int main(){ Base base; base.m_public = 123; base.m_protected = 123;}protected는 class 밖에서 접근을 할려하니 오류가 발생합니다. base.m_protected는 불가능한데요. 당연히 private는 안되는 것을 알고 계실 것이라 생각합니다.  protected는 상속된 곳에서 접근이 되느냐 안되느냐가 public이랑 차이입니다. #include using namespace std;class Base{public: int m_public;protected: int m_protected;priv..

[따배시 11.1 c++] 상속의 기본1

Constructor를 해주는 이유는 메모리가 할당될 때 initializer를 해주기 위한 것입니다.  class Mother{public: int m_i;};class Child : public Mother{public: Child() { this -> m_i = 10; }};이렇게 상속을 받은 것을 this -> 로도 가능합니다.  상속을 받으면 자기 거가 되는 것입니다. 하지만 초기화는 불가능한데요.   class Child : public Mother{public: Child() : m_i(1024) { this -> m_i = 10; this -> Mother::m_i = 1024; }};여기서 초기화를 하면 오류가 발생합니다. 왜 초기화는 안되냐고 생각을 할 수 있습니다.   #inc..

[c++] 2702번 초6 수학

문제  코드#include #include using namespace std;int gcd(int a, int b){ if (a % b == 0) return b; return gcd(b, a % b);}int lcm(int a, int b){ return a * b / gcd(a, b);}int main(){ int n; cin >> n; int x, y; for (int i = 0; i > x >> y; cout  알고리즘 int gcd(int a, int b){ if (a % b == 0) return b; return gcd(b, a % b);}바로 gcd를 구하는 코드를 알면 쉽게 풀 수 있지만 이에 대한 코드가 모르면 갈피를 잡지 못할 수 있습니다.  유클리드 알고..

[c++] 2903번 중앙 이동 알고리즘

문제https://www.acmicpc.net/problem/2903 코드#include #include using namespace std;int n;int main(){ cin >> n; int dot = 2; while (n--) { dot = dot * 2 - 1; } cout (pow(dot, 2))  설명 주어진 도형을 잘 보면 2 * 점의 개수 -1 순으로 증가를 하는 것을 볼 수 있습니다. 이것을 바탕으로 while문을 걸어준 다음 pow(dot, 2)) 혹은 dot * dot를 출력해주시면 답은 나옵니다. 간단한 문제라 점의 개수가 어떻게 증가하는지 여부만 파악한다면 쉽게 풀 수 있는 문제였습니다. 예제 실행 흐름 만약 n = 3을 입력받으면: 1. 초기 dot = 2. 2. 첫 번째 ..

[C++] 2720번 세탁소 사장 동혁

문제 코드#include using namespace std;int main(){ int n, j; int arr[4] = { 25, 10, 5, 1 }; cin >> n; int a, b, c, d; for (int i = 0; i > j; a = j / arr[0]; j -= a * arr[0]; b = j / arr[1]; j -= b * arr[1]; c = j / arr[2]; j -= c * arr[2]; d = j / arr[3]; j -= d * arr[3]; cout  문제 해설금액을 각각의 동전 단위로 나누어서 최소 동전을 환산하는 것입니다. 이같은 경우 탐욕적 알고리즘을 사용하면 금방 풀 수 있습니다.  일단 저는 그냥 흐름대로 코딩을 작성하여서 제 코드가 최선의 알..

[C++] 상속이란?

컴퓨터를 생각해봅시다. 컴퓨터에 들어가는 제품은 노트북에도 들어갑니다.  이 경우에 부모와 자식간의 관계에 있는 클래스라 규정이며 이것은 바로 상속이라고 합니다. A notebook is a Computer이다. 이 경우 Notebook 클래스를 새롭게 정의하는 대신 computer 클래스를 확장하여 간단히 정리할 수 있습니다.  추가되는 멤버들만 기술함으로써 정의할 수 있는 것입니다.  클래스class Computer{public: string manufacturer; string processor; int ramSize; int diskSize; double processorSpeed; double computerPower() { return ramSize * processorSpeed; } dou..

[c++] 백준 2563번 색종이

문제코드#include using namespace std;int main(){ int arr[101][101] = { 0, }; // 101x101 크기의 2차원 배열을 0으로 초기화하여 선언 int a, b; int num; cin >> num; // 사각형의 수를 입력받음 int answer = 0; // num개의 사각형을 입력받아 그리기 for (int k = 0; k > a >> b; // 사각형의 시작 좌표 (a, b)를 입력받음 for (int i = a; i  해설처음에는 어떻게 푸는지 조금 시간이 걸렸습니다. 겹치는 부분을 전체 영역에서 빼서 구해야 하나? 생각을 하다가 도저히 모르겠어서 다른 정답 풀이의 푸는 방법을 조금 보고서 ..

[C++] 백준 10798 세로읽기

문제   코드#include using namespace std;char a[5][16];int main(){ for (int i = 0; i > a[i]; } for (int i = 0; i  해설* 배열에서 유효한 문자만 출력할 것 여기에서 다른 부분은 읽어보면서 대충 어떤 느낌으로 풀어야할지 감이 잡힐 것입니다. 여기서 놓치기 쉬운 부분은 바로 if(a[k][i] != '\0') 이 부분인데요. 유효한 데이터가 아닐 때 출력하지 안ㅇㅎ기 위해 '\0'을 해주어야 합니다. 이 조거니 없다면 쓰레기 값이 출력이 될 수 있습니다.  만약 예제가ABCDE123XYZHELLOWORLD이렇게 주어진다면 이것을 세로로 해서 출력을 하라는 문제입니다. 저희가 이것을 각각 char a[0], a[1], a[2]. ..

반응형