AtCoder が提供しているABC(AtCoder Beginner Contest)371 A問題をC++とPythonで解いてみました。ABC371は、2024年9月14日21:00に実施されました。
AtCoder の紹介はこちらに、プログラミングの方針はこちらに記事があります。
A問題 Jiro(Difficulty : 34)
問題の詳細は、リンク先をご覧ください。
丁寧に条件分岐で判断します。AtCoder Problems による Difficulty は 34 でした。
解答案
C++ プログラム例(ABC371A)
3つの文字の組み合わせは、$2^3 = 8$ 通りしかありません。実際には、もう少し減らすことができます。
- $A > B$ の場合
- $A > C$ の場合
$B$ と $C$ の大きい方が2番目になります。 - $C > A$ の場合
$C > A > B$ となるため、$A$が2番目になります。
- $A > C$ の場合
- $B > A$ の場合
- $B > C$ の場合
$A$ と $C$ の大きい方が2番目になります。 - $C > B$の場合
$C > B > A$ となるため、$B$ が2番目になります。
- $B > C$ の場合
以下が、C++プログラムです。
#include <bits/stdc++.h>
using namespace std;
int main()
{
char sab, sac, sbc;
cin >> sab >> sac >> sbc;
if (sab == '>') {
if (sac == '>') {
if (sbc == '>') {
cout << 'B' << endl;
} else {
cout << 'C' << endl;
}
} else {
cout << 'A' << endl;
}
} else {
if (sbc == '>') {
if (sac == '>') {
cout << 'A' << endl;
} else {
cout << 'C' << endl;
}
} else {
cout << 'B' << endl;
}
}
return 0;
}
AC(Accepted=正しいプログラム)と判定されました。
Python プログラム例(ABC371A)
Python版も基本的な考え方は同じです。以下がプログラムです。
"""AtCoder Beginner Contest 371 A"""
sab, sac, sbc = input().split()
if sab == '>':
if sac == '>':
if sbc == '>':
print('B')
else:
print('C')
else:
print('A')
else:
if sbc == '>':
if sac == '>':
print('A')
else:
print('C')
else:
print('B')
こちらも「AC」と判定されました。
最後に
ABC371は、体調が悪く参加できませんでした。少し遅くなりましたが、解ける問題は記事で紹介します。
引き続き ABC の問題を紹介していきます。