けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

AtCoder ABC 158 A - Station and Bus (7Q, 灰色, 100 点)

ABC-A のスキルではないけど、ソートしてしまうのが楽。

問題概要

長さ 3 の文字列  S が与えられる。 S に含まれる文字は 'A' か 'B' のいずれかである。

この文字列が 'A' と 'B' をともに含むかどうかを判定せよ。

解法

 S をソートするのが楽だと思う。たとえば、"BAB" をソートすると、"ABB" となる。

  • ソートして先頭の文字が 'A' で、末尾の文字が 'B' であったら、"Yes"
  • そうでなければ "No"

と答えればよい。

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

int main() {
    string S;
    cin >> S;
    sort(S.begin(), S.end());
    if (S[0] == 'A' && S.back() == 'B')
        cout << "Yes" << endl;
    else
        cout << "No" << endl;
}