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]
この記事が気に入ったらサポートをしてみませんか?