兄貴の伝説 - hatena edition -

ソフトウェア職人を目指してます

2.5 導入問題

さて導入問題から学習開始です。しかし、いきなりですが、「こんなことでハマるのは自分くらいでは?」という状況に陥ったので、ありのままをお伝えします。(書籍内の文章の具体的な説明は端折ります)

入力例2: 3 4 3 2

↑この入力例、書籍内では縦並びなのですがなぜか横になってしまいますね。Markdown の弊害ですかね?

それはさておき、何にハマったかというと、本文にこう書いてあったのです↓

入出力例2の場合は、価格が減少しているケースですが、この問題ではj>iという条件から、買って売る作業を1回は行う必要があるので、最大利益は-1となります

これを読んだとき、「えっ?」って思いました。それは、「3のときに買って4のときに売れば利益が出るのでは?」という思い込みからでした。

10分位悩みましたが、問題をよくよく読み直したら、下記の文をよく理解していなかったのが原因でした。

入力 最初の行に整数nが与えられます。

つまり、最初の行の「3」は特別扱いで、2行目以降の整数の数を表していた、ということに気づかなかったわけです。

この手の入力は、一般的なアプリケーションでは、最初に「整数の個数を入力してください」的な導入文をユーザーに示したあと、nの入力を促してユーザーに個数を入力させた後に、実際のデータを入力させるイメージが頭にこびりついていたわけです。競技プログラミングではそういうものを端折って、問題文に沿ったデータ入力をさせる、ということがスッポ抜けていたのと、そもそも問題文をよく読んで理解していなかった、というのが今回のハマリポイントでした。

さて、こんな記事要らないんじゃない?」という意見も聞こえてきそうですが、「自分はハマらなかったのに、他人がどういう過程を経て、どういうハマり方をしたのか?」という情報は、意外と見かける機会がないので、私以外の誰かの何かの参考になるかもという志で、今後も積極的に記載していこうと思っています。