読者です 読者をやめる 読者になる 読者になる

SRM 526 Div2 Easy CheatingQuiz

問題文を読み解くのに時間がかかった・・・

問題

3択の問題が与えられる.回答者はチートして各選択肢の答えの個数を持っている.各問題の選択肢の個数を配列として返せ.

解答

まず選択肢の個数を数え,一問ごとに選択肢の個数を減らしていく.選択肢の個数が0出ない個数を数え配列に格納していく.

class CheatingQuiz
{
public:
  vector <int> howMany(string answers)
    {
      int n = answers.size();
      vector<int> ans(3, 0);
      for(int i = 0; i < n; i++){
        if (answers[i] == 'A') ans[0]++;
        if (answers[i] == 'B') ans[1]++;
        if (answers[i] == 'C') ans[2]++;
      }
      vector<int> res;
      for(int i = 0; i < n; i++){
        int noption = 0;
        for(int j = 0; j < 3; j++) if (ans[j] != 0) noption++;
        res.push_back(noption);
        if (answers[i] == 'A') ans[0]--;
        if (answers[i] == 'B') ans[1]--;
        if (answers[i] == 'C') ans[2]--;
      }
      return res;
    }
};