Aizu Online Judge(AOJ)が提供している「プログラミング入門」(ITP1)の9_C問題をC++とPython で解いてみました。
ITP1 のトピック9では、文字列について学びます。「文字列処理の基礎を学習します。」とあります。この学習コースを通じて、Python に慣れていきたいと考えています。
問題(9_C: Card Game)
問題はリンク先をご覧ください。
文字列の(辞書順の)比較を行い問題を解きます。
解答案
C++ プログラム例(ITP1 9_C)
比較演算子で文字列を辞書順で比較できます。あとは、問題文に記述されているカードゲームのルールをプログラムとして実装するだけです。
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin >> n;
int taro = 0;
int hanako = 0;
for (int i = 0; i < n; ++i) {
string s1, s2;
cin >> s1 >> s2;
if (s1 > s2) {
taro += 3;
} else if (s1 < s2) {
hanako += 3;
} else {
taro += 1;
hanako += 1;
}
}
cout << taro << " " << hanako << endl;
return 0;
}
Python プログラム例(ITP1 9_C)
Python も比較演算子で文字列を比較できます。C++ をそのまま移植しました。
n = int(input())
taro = 0
hanako = 0
for i in range(n):
s1, s2 = input().split()
if s1 > s2:
taro += 3
elif s1 < s2:
hanako += 3
else:
taro += 1
hanako += 1
print(taro, hanako)
上記プログラムは、すべて AOJ で「AC(Accepted=正解)」と判定されます。
最後に
C++ の string クラス、Python の文字列は、+演算子で文字列の連結ができたり、比較演算子で辞書順で比較ができます。これのより、文字列の処理を簡潔に書くことができています。
引き続き、ITP1 の問題を紹介していきます。