AtCoder が提供しているABC(AtCoder Beginner Contest)327 のA問題をC++とPythonで解いてみました。ABC327は、2023年11月4日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 ab(Difficulty : 23)
問題はリンク先をご覧ください。
文字列に特定の連続2文字が含まれているか判定します。AtCoder Problems による Difficulty は、23 でした。
解答案
C++ プログラム例(ABC327A)
文字列 s を読み込み、s[i] と s[i+1] の2文字が ‘a’ と ‘b’ または、’b’ と ‘a’ になっているか調べます。文字列の添え字は 0 から始まります。
以下が、C++プログラムとなります。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
string s;
cin >> s;
bool result = false;
for (int i = 0; i < n - 1; ++i) {
if ((s[i] == 'a')&&(s[i + 1] == 'b')) {
result = true;
}
if ((s[i] == 'b')&&(s[i + 1] == 'a')) {
result = true;
}
}
if (result) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC327A)
Python は文字列の包含が簡単に書けます。以下となります。
"""AtCoder Beginner Contest 327 A"""
n = int(input())
s = input()
print("Yes" if "ab" in s or "ba" in s else "No")
こちらも「AC」と判定されました。
最後に
A問題は解きやすい難易度の問題が出題されています。初心者に取り組みやすいコンテストが毎週開催されていることは、ありがたいです。
引き続き ABC の問題を紹介していきます。