AtCoder Beginner Contest 132 A

A - Fifty-Fifty

最初に書いたコード

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;

int main() {
  string s;
  cin >> s;
    
  vector <int> v(4);
  for (int i = 0; i < s.length(); i++) {
    v[i] = s[i];
  }

  sort(v.begin(), v.end());

  string ret;
  if (v[0] == v[1] && v[1] != v[2] && v[2] == v[3]) ret = "Yes";
  else ret = "No";
    
  cout << ret << endl;
}

他の回答を見て修正したコード

std::sortはstringに対してもつかえる。 (stringもベースは配列なので当然か。)

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

int main() {
  string s;
  cin >> s;
    
  sort(s.begin(), s.end());

  string ret;
  ret = (s[0] == s[1] && s[1] != s[2] && s[2] == s[3]) ? "Yes" : "No";
    
  cout << ret << endl;
}

学んだこと

  • std::vectorというのは可変長配列を表現するクラス
    • vectorというヘッダファイルをincludeすることで使用可能になる。
    • 以下の形で宣言する。
      • vector <要素の型> vct(配列のサイズ);
      • vector <要素の型> vct{要素1 要素2 要素3};
  • 可変長配列の他にもリスト、キューなどのデータ構造を表現するクラステンプレートが存在し、コンテナと呼ばれる。
  • algorithmというヘッダファイルをincludeすると、std::sortなどの関数がつかえる。