考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC091-B - Two Colors Card Game を解く

ABC091-B - Two Colors Card Game

 

青いカードに書かれた文字列全てについてシミュレーションをすればいい

(また、赤いカードについてのシミュレーションは無駄である

正の得点となる文字列であれば青いカードの方に出現するからだ)

 

ここで注意しておきたいことは

青いカードに書かれた文字列全てのパターンで

得点が負になる可能性があるという点

 

・得点が負になるパターン

1

apple

2

apple

apple

 

上記の場合で "apple" を宣言してしまうと 1 - 2 = - 1 で、- 1 点となってしまう

したがってこの場合は、赤いカードにない適当な文字列を宣言した場合である

「0点」が最大得点となる

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
N=int(input())

l1=[]
for i in range(N):
  l1.append(input())

M=int(input())

l2=[]
for i in range(M):
  l2.append(input())

# 考えられる最低得点で初期化
mx=-len(l2)

for x in l1:
  # 得点
  a=l1.count(x)

  # 失点
  b=l2.count(x)

  mx=max(mx,a-b)

# 得点が負だった場合は0を出力
print(max(mx,0))

 

提出結果はACでした