알고리즘/BOJ

백준 15720번 카우버거

꾸준함. 2018. 6. 15. 15:40

문제 링크입니다: https://www.acmicpc.net/problem/15720


기말고사 전에 풀었던 중앙대 CodeRace 2018을 마저 풀기로 마음을 먹었습니다.

카우버거 문제는 C++에서 정렬 알고리즘을 제공하기 때문에 쉽게 풀 수 있었습니다.

버거, 사이드 메뉴, 음료의 갯수 중 제일 작은 값이 세트의 갯수입니다.

버거, 사이드 메뉴, 음료를 내림차순 정렬한 다음에 세트의 갯수만큼은 10% 할인해주고 나머지는 정상가격으로 더해주면 쉽게 풀 수 있는 문제였습니다.


#include <iostream>

#include <vector>

#include <algorithm>

#include <functional>

using namespace std;

 

const int MAX = 1000 + 1;

 

int B, C, D;

vector<int> burger, side, beverage;

 

void discount(void)

{

        int sum = 0;

        sort(burger.begin(), burger.end(), greater<int>()); //내림차순 정렬

        sort(side.begin(), side.end(), greater<int>()); //내림차순 정렬

        sort(beverage.begin(), beverage.end(), greater<int>()); //내림 차순 정렬

 

        int setNum = min(burger.size(), min(side.size(), beverage.size()));

 

        for (int i = 0; i < setNum; i++)

        {

                 sum += burger[i] * 0.9;

                 sum += side[i] * 0.9;

                 sum += beverage[i] * 0.9;

        }

 

        //나머지는 정상가

        for (int i = setNum; i < burger.size(); i++)

                 sum += burger[i];

        for (int i = setNum; i < side.size(); i++)

                 sum += side[i];

        for (int i = setNum; i < beverage.size(); i++)

                 sum += beverage[i];

 

        cout << sum << endl;

}

 

int main(void)

{

        cin >> B >> C >> D;

 

        int sum = 0;

        //버거 정상가격

        for (int i = 0; i < B; i++)

        {

                 int price;

                 cin >> price;

                 burger.push_back(price);

                 sum += price;

        }

        //사이드 메뉴 정상가격

        for (int i = 0; i < C; i++)

        {

                 int price;

                 cin >> price;

                 side.push_back(price);

                 sum += price;

        }

        //음료 정상가격

        for (int i = 0; i < D; i++)

        {

                 int price;

                 cin >> price;

                 beverage.push_back(price);

                 sum += price;

        }

 

        cout << sum << endl; //정상가격

        discount();

 

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형