週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

リストへの要素の追加・削除(AtCoder(競プロ)1日1問【22日目】【Python】)


AtCoder Beginner Contest 091 B問題

B - Two Colors Card Game

 

競技プログラミングで使える関数を実際の問題を通して紹介いたします。

今回は「リストへの要素の追加・削除」です。

今回の問題は図的にいうとこのようなイメージです。
f:id:ml_begin:20180624124738p:plain
オレンジ色の玉の数を求めていきます。

リストへの要素の追加・削除

N = int(input())
s_n = []
for i in range(N):
    s_n.append(input())
M = int(input())
for j in range(M):
    youso = input()
    if youso in s_n:
        s_n.remove(youso)
max_point = 0
for k in range(len(s_n)):
    max_point = [s_n.count(s_n[k]),max_point][s_n.count(s_n[k])<max_point]
print(max_point)

リストへの追加:リスト.append(追加要素)

リストから削除:リスト.remove(削除要素)

このように実行することにより、リストへの追加・削除が可能となります。

コードの改善

リストへの追加・削除をせずとも、問題自体は解くことが可能です。

n = int(input())
s = [input() for i in range(n)]
m = int(input())
t = [input() for i in range(m)]

ans = 0
for str in s:
    cur = s.count(str) - t.count(str)
    ans = max(ans, cur)

print(ans)

追加・削除をする場合、その分時間を消費します。そのため、競技プログラミングではなるべく無駄な作業を減らす必要があります。

 

参考:
PythonのCounterでリストの各要素の出現個数をカウント | note.nkmk.me
要素の確認(in演算子, indexメソッド, countメソッド) - リスト - Python入門
要素の削除(del文, popメソッド, removeメソッド) - リスト - Python入門

 

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで