【ABC151 C】「Welcome to AtCoder」を解く【Python3】

abc151c

「AtCoder」解説一覧へ

AtCoderのコンテストに参加した高橋君の正答数とペナルティ数を答える問題です。

コンテストは全部で N 問、M 回の提出を行い、提出した問題と結果(「AC」または「WA」)が分かっています。

提出
n, m= map(int, input().split())
ps = [list(map(str,input().split())) for _ in range(m)]

str_l = ["WA"]*n
int_l = [0]*n
num = 0
ac = 0

for pp, s in ps:
    p = int(pp)-1
    if s == "AC":
        str_l[p] = "AC"
    else:
        if str_l[p] != "AC":
            int_l[p] += 1

for i in range(n):
    if str_l[i] == "AC":
        num += int_l[i]
        ac += 1

print(ac,num)

N,M は整数として受け取っておきます。

提出した問題 p と結果 s を内包表記を使用して受け取り、2次元リストを生成します。

それから、すべてが「WA」のリストと「0」のリストを生成します。

先ほどの2次元リスト ps を用いて、どの問題が「AC」したのか、まだ「AC」していない問題を何回「WA」したのかを最初のfor文で調べていきます。

2つ目のfor文で、「AC」を出した問題の回数(ac)と「AC」を出す前のペナルティ回数(num)を計算して結果を出力します。

【ABC151】解説記事リスト

「AtCoder」解説一覧に戻る

1 COMMENT

かんちゃん

解説が分かりやすくて助かります。
ありがとうございます。

返信する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です