AtCoder が提供しているABC(AtCoder Beginner Contest)298 のA問題をC++とPythonで解いてみました。ABC298は、2023年4月15日21:00に実施されました。
この回は、外部からDDoS攻撃を受けてサーバが不安定になり unrated となりました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Job Interview
問題はリンク先をご覧ください。
与えられた文字列が条件を満たすか確認する問題です。AtCoder Problems による Difficulty は算出されていません。A問題としては通常の難易度だと思います。
解答案
N と文字列 S を読み込み、以下の条件を満たしているか判断します。
- 文字列に ‘x’ が一つでも含まれていれば、”No” と出力する。
- 文字列が ‘o’ を一つも含まなければ、”No” と出力する。
- それ以外の場合は、”Yes” と出力する。
C++ プログラム例(ABC298A)
変数 result を false に初期化します(11行目)。文字列にひとつでも ‘o’ があれば、result を true にします(13、14行目)。ひとつでも ‘x’ があれば、result を false にして、ループを break します(16-18行目)。
以下が、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; ++i) {
if (s[i] == 'o') {
result = true;
}
if (s[i] == 'x') {
result = false;
break;
}
}
if (result) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC298A)
C++のロジックをそのまま Python に書き直しました。
"""AtCoder Beginner Contest 298 A"""
n = int(input())
s = input()
result = False
for i, ch in enumerate(s):
if ch == 'o':
result = True
if ch == 'x':
result = False
break
print("Yes" if result else "No")
こちらも「AC」と判定されました。
最後に
ABC298 は、unrated となりました。今回、3問しか解けず苦戦しているため、レートとしては、得したと思います。
引き続き ABC の問題を紹介していきます。