[C++] 프로그래머스 부족한 금액 계산하기
·
Algorithm/Programmers
using namespace std; long long solution(int price, int money, int count) { long long answer = (long long)price * ((long long)count * ((long long)count + 1) / 2); return (money < answer) ? answer - money : 0; } 해결방법 - 매 번째의 금액이 횟수만큼 늘어난다. - 1 * price + 2 * price + 3 * price.... 이렇게 1~n까지의 합을 구하는 방법을 통해 수식으로 풀게되었다. n * (n + 1) / 2 여기서 price와 count가 2500, 2500이 되어 계산 가능한 범위를 넘을 수 있으므로 형변환을 하여 풀었다. ..
[C++] RTTI
·
C++/Basic
RTTI - RTTI는 실행시간 데이터형 정보라는 뜻이다. - 가상 함수들을 가지고 있는 클래스들에 대해서만 사용할 수 있다. dynamic_cast 연산자 - 가능하다면 기초클래스형을 지시하는 포인터로부터 파생클래스형을 지시하는 포인터를 생성한다. - 가능하지않다면 널포인터인 0을 리턴한다. - 포인터가 지시하는 객체형이 무엇인지 알려 주지 않는다. - 객체의 주소를 특정형의 포인터에 안전하게 대입할 수 있는지 알려준다. class Grand { //가상 메서드들을 가지고 있다. }; class Sup : public Grand { ... }; class Magn : public Sup { ... }; Grand * pg = new Grand; Grand * ps = new Sup; Grand * pm..
[C++] 예외 처리
·
C++/Basic
abort() 호출 void Test::hmean(double a, double b) { if (a == -b) { std::cout > y) { try { z = hmean(x, y); } catch (const char* s) { std::cout
[C++] 내포 클래스
·
C++/Basic
class Test { public: Test(int xi, int yi, int zi) : ho() { x = xi; y = yi; } protected: int x; int y; public: class hold { public: hold() { val = 2; } private: int val; public: int value() const { return val; } void setvalue(int s) { val = s; } }; hold ho; }; - 내포클래스는 원래의 클래스의 사용범위와 같다. - 다른 클래스 안에 선언된 클래스를 내포 클래스라고 합니다. - private안에 내포클래스가 있을 때에는 Test만이 내포클래스가 존재함을 알 수 있다. - protected는 내포클래스가 있을..
[C++] 프렌드 클래스
·
C++/Basic
class Tv { public: freind class Remote; bool volup(); private: int state; int channel; } class Remote { private: int mode; public: bool volup(Tv & t) { return t.volup(); } void set_chan(Tv & t, int c) { t.channel = c; } } - Tv의 private 멤버에 직접 접근가능한 Remote 메서드 set_chan - 프렌드 자격을 부여할 필요가 있는 것은 private에 직접 접근할 필요가 있는 메서드 - Remote::set_chan()을 Tv클래스에 대해 프렌드로 만드는 방법은, Tv클래스 선언 안에 그것을 프렌드로 선언하는 것 - Tv..
[C++] 템플릿 클래스
·
C++/Basic
템플릿 클래스 헤더 template class Stack { public: Stack(); bool isempty(); ... private: enum {MAX = 10}; T items[MAX]; } template Stack::Stack() { ... } template bool Stack::isempty() { ... } 템플릿 클래스 사용 Stack kernels; Stack kernels2; 명시적으로 어떤 데이터형을 사용할 것인지 제공해야한다. 템플릿의 융통성 template class Array { ... }; template class GrowArray : public Array //상속 { ... }; 상속을 시킬 수 있다. template class Array { ... }; Array..