ml_begin’s blog

Python初心者が、機械学習、画像認識、Web解析について取り組んでいきます。

AtCoder(競プロ)〜1日1問【8日目】

f:id:ml_begin:20180604073123j:plain
A問題は秒で終えられるようになってきました。

本日は96回目の問題A。(98回目から逆走してます)

問題は、

1月1日〜a月b日までの間に月と日の数が同じになる日が何日あるか。

変数にdayOfTakahashiとつけておりますが、決してふざけているわけではなく、問題の設定がそうなってるからです。笑
abc096.contest.atcoder.jp

今回はなかなか短いのでは?可読性こみで。

month, day = [int(i) for i in input().split()]
dayOfTakahashi = month if month <= day else month - 1
print(dayOfTakahashi)

実行時間、メモリ使用量ともに一番短い・一番少なかったです。

一応他の人はどうやっているのか。
一番短い人のコード

a,b=map(int,input().split());print(a-(a>b))

mapの方が見やすいかもしれません。
a- (a>b)なる表現ができるとは。
可読性的には私の方がよいですが、
冗長感が拭えないのでこのコードを次からはかけるようにしたい。
要はa>bの時(月が日よりも大きい時) 
月と日が同じ日は一つ減るのでTrueすなはち1を月の数から引けられれば良いのです。
だからa>bを用いたのですね。
素晴らしい。