アイサカ・IT・Python

Python AI×機械学習×webサービス

条件が一致した値以外を配列に追加する方法(AtCoder(競プロ)1日1問【16日目】【Python】)

AtCoder Beginner Contest 094 B問題

B - Toll Gates

 

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

今回は「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言語の基本から仕事のやり方まで

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