週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

区切り文字で分割する(split)(AtCoder(競プロ)1日1問【8日目】【Python】)


AtCoder Beginner Contest 096 A問題

abc096.contest.atcoder.jp

 

競技プログラミングで使える関数を実際の問題を通して紹介いたします。

今回は「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言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで