AtCoder が提供しているABC(AtCoder Beginner Contest)381 A問題をC++とPythonで解いてみました。ABC381は、2024年11月22日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 11/22 String(Difficulty : 31)
問題の詳細は、リンク先をご覧ください。
「11/22文字列」の定義に従い判定を行います。AtCoder Problems による Difficulty は 31 でした。
解答案
C++ プログラム例(ABC381A)
文字列の定義に基づき、以下の条件を判定します。
- 文字列の長さが奇数か?
- 文字列の前半はすべて ‘1’ か?
- 文字列の中央が ‘/’ か?
- 文字列の後半はすべて ‘2’ か?
すべての条件を満たす場合は “Yes”、満たさない場合は “No” を出力します。以下が、C++プログラムです。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
string s;
cin >> s;
bool result = true;
if (n % 2 != 1) {
result = false;
}
for (int i = 0; i < n / 2; ++i) {
if (s[i] != '1') {
result = false;
}
}
if (s[n / 2] != '/') {
result = false;
}
for (int i = n / 2 + 1; i < n; ++i) {
if (s[i] != '2') {
result = false;
}
}
if (result) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC381A)
Python版も基本的な考え方は同じです。以下がプログラムです。
"""AtCoder Beginner Contest 381 A"""
n = int(input())
s = input()
result = True
if n % 2 != 1:
result = False
for ch in s[0:n // 2]:
if ch != '1':
result = False
if s[n // 2] != '/':
result = False
for ch in s[n // 2 + 1:n]:
if ch != '2':
result = False
print("Yes" if result else "No")
こちらも「AC」と判定されました。
最後に
ABC381は金曜日に開催されました。平日の参加は難しく、コンテスト後に解いた結果をブログで紹介します。
引き続き ABC の問題を紹介していきます。