AtCoder が提供しているABC(AtCoder Beginner Contest)312 のA問題をC++とPythonで解いてみました。ABC312は、2023年7月29日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Chord(Difficulty : 12)
問題はリンク先をご覧ください。
与えられた文字列が特定の文字列に一致しているか答える問題です。AtCoder Problems による Difficulty は 12 でした。
解答案
C++ プログラム例(ABC312A)
一致しているか調べる7つの文字列をすべて直接比較しました。if 文の条件式が長くなるため、2行に分けています(10、11行目)。
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
bool result = false;
if ((s == "ACE")||(s == "BDF")||(s == "CEG")||(s == "DFA")
||(s == "EGB")||(s == "FAC")||(s == "GBD")) {
result = true;
}
if (result) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC312A)
候補の文字列をリストとして表現しました(3行目)。リストのどれかに一致しているかを in 演算子によって判断しています(5行目)。
"""AtCoder Beginner Contest 312 A"""
s = input()
words = ["ACE", "BDF", "CEG", "DFA", "EGB", "FAC", "GBD"]
print("Yes" if s in words else "No")
どちらも「AC」と判定されました。
最後に
問題を解くためのロジックは簡単ですが、7つの文字列をひとつでも間違えると、WAとなります。慎重に確認して提出しました。
引き続き ABC の問題を紹介していきます。