プログラミングを上達させたい

情報学専攻の大学院→放送局でCMの営業など@大阪→舞台俳優&IT営業@東京

ATCODERのBiginner Contestの過去問(ABC005C)をschemeで。

毎日プログラミングやってるわけではないので、連日の更新はやはり難しいですね。

とりあえず、なんか頑張って解いたものとして、Atcoder Bigenner Contestの#005のC問題について書きます。

 

問題は下のURLのものです。

http://abc005.contest.atcoder.jp/tasks/abc005_3

 

 

これが、なんかこう、リストで書くと綺麗に書けるんかな、と思って、schemeで書いてみました。

方針としては、たこ焼きが出来る時間のリスト(以下、たこリスト)と客が来る時間のリスト(客リスト)の先頭を見て、たこ焼きを客に売ることが出来れば両方のリストの先頭を取り除き、売れなければたこリストのみの先頭を取り除く。

それを続けていって、客リストがなくなれば(空リストになれば)'yes'、先にたこリストがなくなれば'no'を出力する、という感じです。

 

そして、出来たコードがこちら。

 

gist11111329

 

ポイントは、answerという関数の条件判断の順番ですね。たこ焼きと客が同時になくなるとは限らないので、客リストが空になるかを先に判定しないといけないわけです。

これを提出するとACでした。ちなみに、手元での確認にはRacketというソフトを使っています。

そして何より、この問題をschemeで提出した人はなんと僕のみ(4/20現在)!これは快感ですね。

 

という感じでした。

これまでは自分が今の実力で解けるレベルの問題しか解いてないですが、そろそろワンランク上の問題を解くため、本やらなんやらを読んで勉強していきたいところです。

嫌だなー

 

今回は以上です。