본문 바로가기

Algorithm/자료구조

(C++) - 백준(BOJ) 5157 : Bailout Bonus

반응형

https://www.acmicpc.net/problem/5157

 

5157번: Bailout Bonus

In order to prevent many financial companies from collapsing, the US Government (and several other governments) “bailed them out”, in the sense that they provided multi-billion dollar emergency loans. After this happened, several of the companies went

www.acmicpc.net

map을 이용해 푼 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

data 수 k, 전체 회사 수 c, 구제할 회사 수 b, 보너스 정보 수 n, 세금을 제한 보너스 결과에 대한 비율 r, 정답을 출력할 ans, 회사별 보너스 정보를 저장할 map변수 bonusInfo, 구제받을 회사 목록을 저장할 vector변수 bailedCompany를 선언 후 적절히 입력받습니다.* 매 data set마다 자료구조를 적절히 초기화해줍니다.

📔 풀이과정

회사번호와 그 회사가 받은 보너스 정보를 입력받고 세금을 제한 금액을 bonusInfo에 누적해줍니다.bailedCompany의 원소에 loop를 수행하며 ans에 누적해 더해줍니다.

📔 정답출력

형식에 맞게 ans를 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;

int k, c, b, n, r, ans;
map <int,int> bonusInfo;
vector <int> bailedCompany;

int main(){
  cin >> k;
  for(int i = 1; i <= k; i++){
    bonusInfo.clear();
    bailedCompany.clear();
    ans = 0;

    cin >> c >> b >> n >> r;

    for(int i = 0, x; i < b; i++){
      cin >> x;
      bailedCompany.push_back(x);
    }

    for(int i = 0, c, p; i < n; i++){
      cin >> c >> p;
      bonusInfo[c] += p * r/100;
    }

    for(auto b : bailedCompany){
      ans += bonusInfo[b];
    }
    cout << "Data Set " << i << ":\n";
    cout << ans << '\n' << '\n';
  }
}

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.