AtCoderで茶色を目指す 23日目

6:00起床。とても眠たいですが、布団から這いずりでました。外の涼しい空気を吸うと目が覚めます。秋も深まりそうですね。今年は栗が食べたいです。新米も楽しだなぁ。。。あと、かぼちゃも。。。

目標

本日は敬老の日でございまして、一日中家におります。たくさん勉強しよう!目標はB問題を20問!

備忘録

for文と配列

 B問題はfor文を使った問題が多いです。for文を使うということで、配列も使うことが増えます。そこで、for文を使う問題でよくある間違いを残しておきます。

atcoder.jp

 こちらの問題ですが、以下のようなコードで解きました。

n = int(input())
h = list(map(int, input().split()))
count = 1
for i in range(1,n):
if max(h[:i+1])==h[i]:
count+=1
print(count)

 繰り返し処理のところの範囲指定に手こずったので、軽くメモを残します。次のサイトを参考にしました。

note.nkmk.me

 個人的な悩みはrange()関数の扱いです。range()関数の引数には、start,stop,stepの3つを指定できます。また、stopひとつでも構いません。

  • startは開始値を指定できます。特に指定がない限り、0が開始値になります。
  • stopで指定した範囲を繰り返し処理します。ただし、stopで指定した値は含まれません。
  • stepは繰り返し処理における増分を指定します。負の値を指定することもできます。特に指定がない限り、+1の増加になります。

反省

 初めに解いた問題が難しすぎて、時間を取られすぎました。難しい問題は考えすぎそうになったら、答えを見るようにします。諦めも多少必要なのかな。

参考サイト

B - Great Ocean View

Pythonのfor文によるループ処理(range, enumerate, zipなど) | note.nkmk.me