AtCoder Beginner Contest 094 B問題
競技プログラミングで使える関数を実際の問題を通して紹介いたします。
今回は「not in」です。
条件が一致した値以外を配列に追加
N,M,X = map(int,input().split()) toll_index = [int(i) for i in input().split() if int(i) not in [0,N,X]] toll_array = [1 if j in toll_index else 0 for j in range(N+1)] ZtoX, XtoN = sum(toll_array[0:X]),sum(toll_array[X:N]) print([ZtoX,XtoN][ZtoX>XtoN])
二行目の if int(i) not in [0,N,X]が条件が一致した値以外の部分です。
int(i) for i in input().split() で要素を配列の要素として追加する際の条件が
if int(i) not in [0,N,X] であるので、これらの記述により条件に一致した値以外を配列に追加することができます。
コードの改善
競技プログラミングではプログラムの処理完了までの速度も重要な要素の一つですので、より短く簡潔なコードを書くことが重要です。
n,m,x=map(int,input().split()) s=sum(int(a)<x for a in input().split()) print(min(s,m-s))
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る