AtCoder ABC 173 B – Judge Status Summary Python解説

スポンサーリンク

Judge Status Summary

高橋君は、プログラミングコンテスト AXC002 に参加しており、問題 A にコードを提出しました。
この問題には N 個のテストケースがあります。
各テストケース i (1≤i≤N) について、ジャッジ結果を表す文字列 Siが与えられるので、ジャッジ結果が AC, WA, TLE, RE であったものの個数をそれぞれ求めてください。
出力形式は、出力欄を参照してください。

AtCoder Beginner Contest 「Judge Status Summary」

今回の問題では入力がAC,WA,TLE,REのいずれかの文字が与えられます。入力される文字が分かっているので条件文で場合分けをしたり、連想配列を使った解き方ができます。

n = int(input())
c1, c2, c3, c4 = 0, 0, 0, 0

for i in range(n):
    s = input()
    if s == "AC":
        c1 += 1
    elif s == "WA":
        c2 += 1
    elif s == "TLE":
        c3 += 1
    else:
        c4 += 1
        
print("AC x {}".format(c1))
print("WA x {}".format(c2))
print("TLE x {}".format(c3))
print("RE x {}".format(c4))

あらかじめAC,WA,TLE,REをカウントする変数を用意しています。あとは入力された値を場合分けしてカウントアップするだけです。

n = int(input())
dict = {"AC": 0, "WA": 0, "TLE": 0, "RE": 0}

for i in range(n):
    s = input()
    dict[s] += 1
    
for k, v in dict.items():
    print(k, "x", v)

上記のコードは連想配列を使った解き方です。あらかじめAC,WA,TLE,REをキーにした連想配列を準備しています。

n = int(input())
s = [input() for _ in range(n)]

for i in ["AC", "WA", "TLE", "RE"]:
    print("{} x {}".format(i, s.count(i)))

上記のコードは入力される値を配列sに格納し、あとはcountメソッドで配列sにAC,WA,TLE,REがいくつあるのかを出力しています。