見出し画像

ABC94B listのフィルター掛けとか

こんにちは。えんぴつです。昨日いろいろ書きすぎたせいで今日ここに書くことがないです。困った。

早速本題に入ります。

今日の問題はこれ。

ABC94のB問題ですね。
詳しくはリンク先を見て欲しいですが、
まとめて話すと最初にマス数、料金所の数、スタート地点を提示して、次の行で料金所のある場所が提示される。スタートから両端まで行く時、通る料金所が少なくなる方の通る回数を出力せよって問題です。

自分の解法

N,M,Xを数字として入力

Aをリストとして入力

Aの中から、XからNに行くときに必要な料金所だけをまとめたリストXtoNを新しく作る

Xから0に向かう時の料金所の数とXからNに向かう時の料金所の数を比較して、小さいほうを出力する

という流れで進めました。

解答は下の感じになりました。

N,M,X=map(int,input().split())
A=list(map(int,input().split()))
XtoN=[i for i in A if i>X]
CN=len(XtoN)
print(min(CN,M-CN))

いつものように解答が完成した後、もっと動作が速い人は新しくリストを作る代わりにwhileでカウントしていたので、どれくらい早くなるのか自分でも確かめてみたけどむしろ遅くなってしまいました…。昔と今のversionだと得意な処理が変わるのかもしれない。

今日勉強したこと

#リストXからNより大きい数だけを抽出したリストBを作りたいとき

B=[i for i in X if i>N]

この記事が気に入ったらサポートをしてみませんか?