AtCoder Beginner Contest 096 A問題
競技プログラミングで使える関数を実際の問題を通して紹介いたします。
今回は「split( )」です。
問題は、
1月1日〜a月b日までの間に月と日の数が同じになる日が何日あるか。
入力として「月(month)」、「日にち(day)」があります。
それらの入力は一行中で行われ、それらはスペースで区切られています。
そういう場合、区切り文字で分割する「split()」が利用できます。
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>bの時(月が日よりも大きい時) 月と日が同じ日は一つ減るのでTrueすなはち1を月の数から引けられれば良いという理屈です。だからa>bを用いております。
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る