本サイトAIZU ONLINE JUDGE ITP1_9_C へはこちらから
問題:カードゲーム
太郎と花子がカードゲームをする。二人はそれぞれn枚のカードを持っており、nターンの勝負を行う。各ターンではそれぞれ1枚ずつカードを出す。カードにはアルファベットからなる動物の名前が書かれており、辞書順で大きいものがそのターンの勝者となる。勝者には3ポイント、引き分けの場合にはそれぞれ1ポイントが加算される。
太郎と花子の手持ちのカードの情報を読み込み、ゲーム終了後のそれぞれの得点を出力するプログラムを作成せよ。
Constraints
- 入力で与えられるnが1000を超えることはない。
- 与えられる文字列の長さは100以下であり、アルファベットの小文字のみを含む。
Input
一行目にカードの数nが与えられる。続くn行に各ターンのカードの情報が与えられる。1つ目の文字列が太郎のカードに書かれている文字列、2つ目の文字列が花子のカードに書かれている文字列である。
Output
1つ目の数字が太郎の得点、2つ目の数字が花子の得点として1行に出力せよ。2つの数字の間に1つの空白を出力せよ。
Sample Input
3
cat dog
fish fish
lion tiger
Sample Output
1 7
解答例
n = int(input())
T = 0
H = 0
for i in range(n):
card_t, card_h = input().split()
if card_t == card_h:
T += 1
H += 1
else:
if card_h > card_t:
H += 3
else:
T += 3
print(T, H)
解説
以下のように解いていきます。
1つの整数の読み込み
キーボードから文字列を受け取るときに使用するinput関数をint関数で囲み、整数値として受け取ります。
# input関数をint関数で囲み、整数値として変数に代入
n = int(input())
※サイト内「AIZU ONLINE JUDGE ITP1_1_Bをpythonで解いてみた」の、input関数とはに使用方法が書かれておりますのでぜひご覧ください。
n回の太郎、花子の2つの文字列の読み込み
まずは、太郎と花子の点数を設定する変数T,Hを用意します。
続いて、for文を使用し、イテラブルをrange(n)とすることで、1.1つの整数の読み込みで読み込んだ回数分、太郎と花子の文字列を読み込みます。
for文の中で、太郎と花子の文字列を受け取る変数をcard_t, card_hとし、input().split()でそれぞれに代入します。
もし、2人が同じ文字列を受け取った場合、太郎、花子どちらも1点追加します。
そうでない場合は、card_h > card_tを比較し花子の方が辞書順で早い場合に花子に3点、太郎の方が辞書順で早い場合に太郎に3点追加します。
# 太郎と花子の点数を初期化
T = 0
H = 0
# 1で読み込んだ回数分forループを回す
for i in range(n):
# 太郎の文字列(card_t)と花子の文字列(card_h)の読み込み
card_t, card_h = input().split()
# 太郎と花子が同じ文字列を受け取った場合
if card_t == card_h:
# どちらも1点追加
T += 1
H += 1
else:
# 花子の方が辞書順で早い場合
if card_h > card_t:
# 花子に+3点
H += 3
# 太郎の方が辞書順で早い場合
else:
# 太郎に+3点
T += 3
得点の表示
print文を使用し、太郎、花子の順で得点を表示します。
# 太郎、花子の順で得点を表示
print(T, H)
※サイト内の「AIZU ONLINE JUDGE ITP1_1_Aをpythonで解いてみた」の、print関数とはにprint関数の使用方法が書かれておりますのでよかったらご覧ください。
最後に、もう一度プログラムを確認してみましょう。
# input関数をint関数で囲み、整数値として変数に代入
n = int(input())
# 太郎と花子の点数を初期化
T = 0
H = 0
# 1で読み込んだ回数分forループを回す
for i in range(n):
# 太郎の文字列(card_t)と花子の文字列(card_h)の読み込み
card_t, card_h = input().split()
# 太郎と花子が同じ文字列を受け取った場合
if card_t == card_h:
# どちらも1点追加
T += 1
H += 1
else:
# 花子の方が辞書順で早い場合
if card_h > card_t:
# 花子に+3点
H += 3
# 太郎の方が辞書順で早い場合
else:
# 太郎に+3点
T += 3
# 太郎、花子の順で得点を表示
print(T, H)
コメント