【Python】AtCoder Beginner Contest 001

初執筆!
このブログは、筆者のPC Lifeを綴るものです。

しばらくは、pythonの練習目的で最近取り組んでいる「AtCoder Contest」の過去問の解答例を挙げていこうと思っています。
まずは、 2013/10/12 に開催された AtCoder Beginner Contest 001 です。
f:id:PCLife_of_takuma:20180819015330p:plain

A - 積雪深度

問題文:

 ある時刻の積雪深 H1 と その 1 時間前の積雪深 H2 が与えられます。この時、この 1 時間の積雪深差 H1 − H2 の値を計算して出力してください。

My解答:

詳細 -->https://abc001.contest.atcoder.jp/submissions/3019855

要点解説:

 特になし。
初めてのコードだったので、今見るともっと簡単に書けるなぁと思います。


B - 視程の通報

問題文:

 気象情報は、世界中に様々な形で流れています。そのひとつの地上実況気象通報式 (SYNOP) では、視程 (肉眼で物体がはっきりと確認できる最大の距離) を、次の規則に従って、VVという値 (通報式) に変換して報じます。

1. 0.1km 未満: VVの値は 00 とする。
2. 0.1km 以上 5km 以下:距離 (km) を 10 倍した値とする。1 桁の場合は上位に 0 を付す。
 例えば、2,000m =2.0km ならば、VVは 20 である。同じく、200mの場合VVは 02 である。
3. 6km 以上 30km 以下:距離 (km) に 50 を足した値とする。
 例えば、15,000m =15km ならば、VVは 65 である。
4. 35km 以上 70km 以下:距離 (km) から 30 を引いて 5 で割った後、80 を足した値とする。
 例えば、40,000m =40km ならば、VVは 82 である。
5. 70km より大きい:VVの値は 89 とする。
いま、あなたに視程の距離をメートルで与えるので、上記のルールに従って計算されるVVを出力するプログラムを作成してください。

なお、VVは必ず(上位の 0 を含めて)2桁の整数であり、上記のルールに従って計算した時に整数にならないような入力や、上記の範囲に入らない入力 (例:5km より大きく 6km 未満) などはありません。

My解答:

詳細 -->https://abc001.contest.atcoder.jp/submissions/3019930

要点解説:

w = "%02d" % (m*10)

 は何をしているのかというと、C言語でいうprintfみたいな事をしています。つまり、 【"%02d"】の【d】の部分に、【m*10】が代入されたものがwに格納されています。
その際、【02】の命令によって、「2桁表示で、もし1桁で足りないときは、十の位を0で埋めてね」という指令を出しています。
一般的に書くと以下の様になります。

"%【細かい命令】【dとかsとか、型を表す記号】" % (dとかsとかに入れる中身)


C - 風力観測

問題文:

 ある風向風速計は、風向の角度と風程を 1 分毎に自動で記録してくれます。
風向の角度というのは真北を 0 度とし、そこから時計回りに風の吹いてくる方向を定めたものです。気象観測等では全体を等しく 16 分割した 16 方位が用いられます。
16 方位と角度は、以下の表のように対応します。…《長いので割愛》C: 風力観測 - AtCoder Beginner Contest 001 | AtCoder

My解答:

詳細 -->https://abc001.contest.atcoder.jp/submissions/3022153

要点解説:

 見て気付いちゃった人もいるかもしれませんが、なんとこのコード…acceptされていません!笑
58のテストケースの中で1ケースだけエラーが発生するという悲しい結果になったので、デバッグは諦めました。だいたい合っているので!!
もし、コードの不十分な箇所に気付いた方はご一報下さい!


D - 感雨時刻の整理

 まだやってません(´・ω・`)