본문 바로가기
Leaning/C++

[HackerRank] Hotel Prices

by ksw8596 2024. 10. 17.
#include <iostream>
#include <vector>
#include <deque> 
#include <string>
#include <sstream>
#include <exception>

using namespace std;

class HotelRoom {
public:
    HotelRoom(int bedrooms, int bathrooms)
        : bedrooms_(bedrooms), bathrooms_(bathrooms) {}

    //부모를 virtual 함수로 해야 override가능
    virtual int get_price() {
        return 50 * bedrooms_ + 100 * bathrooms_;
    }
private:
    int bedrooms_;
    int bathrooms_;
};

class HotelApartment : public HotelRoom {
public:
    HotelApartment(int bedrooms, int bathrooms)
        : HotelRoom(bedrooms, bathrooms) {}

    //virtual은 생략가능
    int get_price() override {
        return HotelRoom::get_price() + 100;
    }
};

int main() {
    int n;
    cin >> n;
    vector<HotelRoom*> rooms;
    for (int i = 0; i < n; ++i) {
        string room_type;
        int bedrooms;
        int bathrooms;
        cin >> room_type >> bedrooms >> bathrooms;
        if (room_type == "standard") {
            rooms.push_back(new HotelRoom(bedrooms, bathrooms));
        }
        else {
            rooms.push_back(new HotelApartment(bedrooms, bathrooms));
        }
    }
    int total_profit = 0;
    for (auto room : rooms) {
        total_profit += room->get_price();
    }
    cout << total_profit << endl;

    for (auto room : rooms) {
        delete room;
    }
    rooms.clear();

    return 0;
}

'Leaning > C++' 카테고리의 다른 글

[Hackerrank] Vector-Erase  (0) 2024.11.04
[Hackerrank] Vector-Sort  (0) 2024.11.04
DFS(깊이 우선 탐색), BFS(너비 우선 탐색)  (0) 2024.10.25
C++ 자료구조(STL)  (0) 2024.10.24
[HackerRank] C++ Class Template Specialization  (0) 2024.10.17