AtCoder Beginner Contest 091 B問題
競技プログラミングで使える関数を実際の問題を通して紹介いたします。
今回は「リストへの要素の追加・削除」です。
今回の問題は図的にいうとこのようなイメージです。
オレンジ色の玉の数を求めていきます。
リストへの要素の追加・削除
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言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る