B - Two Colors Card Game
コメント歓迎です。
今回はmapを使って解きました。
方針
今回の問題で初めてmapを使いました。
mapは2つの情報を関連付けて記録できます。
今回はカードに書かれた文字列とその登場回数を関連付けて記録しました。
同じ文字列が出てくるたびに関連付けている登場回数を+1します。
コード(AC)
#include <iostream> #include <unordered_map> #include <string> using namespace std; int main() { // 入力 int N; cin >> N; string tmp; unordered_map<string, int> s; for (int i = 0; i < N; i++) { cin >> tmp; // 入力をmap sに登録 // 登録されるたびmap値を+1 // 同じ文字列が登録された場合はmap値が増加 s[tmp]++; } // 上と同様の処理 int M; cin >> M; unordered_map<string, int> t; for (int i = 0; i < M; i++) { cin >> tmp; t[tmp]++; } // sに登録されている文字列をfor文で繰り返し処理 int ans = 0; for (auto& d : s) { // 青カードと赤カードに登録された回数から貰える金額を計算 ans = max(ans, d.second - t[d.first]); } // 出力 cout << ans << endl; return 0; }