AtCoderで茶色を目指す 29日目

6:50起床。朝起きれない。。。まず、夜の寝つきが悪い。。。

何故だ?

目標

 B問題を解き終わる。そして、コンテストを受ける!以上!

反省

 B問題を解き終わりました。過去に遡るほど、難しい問題が多く最後は頭を抱えながら解きました笑。それでも、B問題を制覇したことで問題を解く速度はだいぶ上がったと思います。

 コンテストも受けてきました。これで、通算5回目のテストでした。A問題B問題は特に詰まることなく解くことができました。10分くらいはかかってましたけど。。。
 時間を残してC問題を取り組んだのですが、焦りが出ましたね。初めは全探索かなと思ったのですが、タイムオーバーを出しました。安直に全探索するのはやめようと思います。全探索が無理でも他の方法は案外すぐ思いついたのですが、最終的にここから2回もWAを出しました。タイムオーバーから一度目はサンプルケースを満たしているし大丈夫かなと提出しWA。それに焦って、多少なりにコードを変えたものの中身はそこまで変わってないものを提出しWA。ここら辺で、泣きそうでしたね。。。
 なんとか、直そうと自分の書いたコードを見直して、どんな入力ケースで失敗する可能性があるのかを調べました。コードのミスに気づくことができて、AC。多分50分ほど時間が過ぎていました。ミス自体が本当にしょうもないミスで悔しいです。WAを修正する能力を身につけたいと思います。

 

 

AtCoderで茶色を目指す 28日目

6:50起床。前日はチートデイでしたので、だいぶスッキリしています。モチベも回復しました。眠たいけど。。。

頑張ろっかな。

目標

B問題が残り24問なので、できる限り解こうと思います。他の課題もしようと思うので、目標は15問解くことです!

備忘録

対数を使う

 2の対数を使いたいという問題に出会ったので、この出会いを大切にしたいと思います。という訳で、pythonで対数を扱うには?こちらのサイトを参考にしました。

 

note.nkmk.me

 2の対数の使い方です。

import math
print(math.log2(16))
#4.0

 初めにモジュールmathをimportします。log2()のカッコ内の数字の対数の計算結果を返します。

反省

 16問ときました。コンテストの過去問を遡ると難易度があがって、解いていくのが大変です。その割に頑張れたと思います。コンテストまでにB問題解き終わりたい!

参考サイト

Pythonで指数関数・対数関数を計算(exp, log, log10, log2) | note.nkmk.me

AtCoderで茶色を目指す 26日目

7:20起床。久しぶりにこんな時間に起きちまったぜzzz

本当は5時起きが目標なんです。目標達成のために、夜は10時就寝!それまでに目標を達成しておく!

よし!本日も頑張る!

目標

 次回のコンテストは日曜日です。明日をチートデイにする予定なので、コンテストの日を含めて残り3日で44問のB問題を解きます。

備忘録

数字に添字は使えない話

 久しぶりにエラーコードを見たので備忘録しようと思います。ちなみに、これまでのブログで書いたかは覚えてないけど、何回か見たことのあるエラーでした。エラーコードはこちら↓

TypeError: 'int' object is not subscriptable

 そして、エラーを吐いたコードはこちら↓

 
a,b = map(int, input().split())
count = 0
for i in range(a,b+1):
if str(i) == str(i[::-1]):
count+=1
print(count)

 原因となるのは、上から4行目です。私の頭の中では、「数値のiを文字列のstr型にして、回文の判定をしよう」と言う感じです。ちなみに、回文とは「初めから読んでも、終わりから読んでも同じ文字列になる文」のことです。 
 本題に戻ります。このコードでiは文字列の扱いを受けてると思いましたが、少しずれていました。問題は変数iに添字を使ったことです。そして、エラーコードは「int型に添字使うんじゃないよ!」と言っております。つまり、str型に型変換する前に文字列の扱いをしたのでエラーになりました。

x = str(i)
if x == x[::-1]:

 先に、変数iをstr型に変換すれば解決。

 こちらを参考にしました。

qiita.com

反省

 B問題20問解きました。WAをよく出したりして、調子が上がらなかったけどよく頑張った!良き秋分の日でした。
 勉強中にテンションが上がらない時は、曲を聞きながら勉強しています。宇多田ヒカルさんの「パクチーの唄」が流れて、意識が曲に全ぶりされました。ぱく、、ちー???

参考サイト

【Python】TypeError: 'int' object is not subscriptable が出たとき - Qiita

AtCoderで茶色を目指す 25日目

6:10起床。5時くらいに目覚ましで起きた気がするんですが、タイムスリップしてました。

よし、頑張るぞ!

目標

 B問題を15問解きます。次回コンテストは日曜なので、それまでには絶対解き終わる!

備忘録

改行したい

 \nを使いましょう。ちなみに私はmacを使っているので、バックスラッシュは「option+¥」で打てます。Windowsは知りません。。。同じだと思うけど。。。

print("改行したい?\nならバックスラッシュnでしょ")
#改行したい?
#ならバックスラッシュnでしょ

 以下のサイトを参考にしました。

note.nkmk.me

大文字・小文字の区別

 大文字なら.isupper()を小文字なら.islower()を使います。と言っても、大小の区別を判定するだけなら片方だけで十分だと思います。

print("hello".islower())
#True
print("HELLO".islower())
#False

  以下のサイトを参考にしました。

 

www.javadrive.jp

 この大文字・小文字って前も備忘録に書いたような。。。

反省

 9問しか解けませんでした。。。難易度が高めの問題が多かったので時間を取られてしまいました。(⇦言い訳)
 問題を解くのには、時間が必要です。スマホとかいじったりする時間は後回しで、やるべきことを最優先したいと思います。

参考サイト

Pythonで改行を含む文字列の出力、連結、分割、削除、置換 | note.nkmk.me

Python | 文字列の中の文字が大文字か小文字かを判定する(islower, isupper, istitle)

 

AtCoderで茶色を目指す 24日目

6:40起床。二度寝しそうになったけど、踏みとどまりました。涼し苦なってくると布団が恋しくなるんですね。

連休明けですが、頑張ります。

目標

B問題を10問以上解く!

反省

14問解きました。午後はほぼ講義で潰れた割には頑張れたと思います。

備忘録を書かないと、こんなに短くなるんだぁ。。。

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

AtCoderで茶色を目指す 22日目

6:00起床。昨晩はコンテスト後のアドレナリンドバドバ状態で寝たので、寝つきが悪かった。けど、ぐっすりでした。

本日はチートデイ!勉強しないです。代わりにコンテストの感想と一週間の進捗管理について書こうかな。

コンテストの感想

atcoder.jp

 2021年9月18日のコンテストです。私にとって4回目のコンテストでした。
 感想としては思ったよりもできた!って感じです。A B問題はノーミスで6分で解くことができました。勉強の成果を出せたと思います。問題がそこまで、難しくなかったこともあると思いますが。。。

 順調にAとB解いたので、そのままの勢いでC問題に取り組みました。初め問題文を理解しきれず、時間を使いましたが、コンテスト開始から40分ほどで解くことができました。ここまで、一度もWA(誤答)を出すことなく解けていてかなり嬉しかったです。

 残りの時間は全力でD問題に取り組みました。紙にどうやったら解くことができるのかをひたすら書き留めました。ラスト5分を切ったあたりで、それらしい回答ができました。しかし、いくつかのテストケースで間違いがあり、時間切れに。。。悔しかったですが、サンプルケースは制覇してたし、それなりの満足感もありました。

 全体を通して、かなり成長を実感できるコンテストになりました。しかし、茶色への道のりはまだ遠そうです。

f:id:namazutoelu:20210919075951p:plain

茶色までは一山越えないと。。。

 これからも、モチベーションを維持して頑張ります!

進捗について

 現状、解いていないB問題が70問ほどあります。今週はそちらを打破することを目標にして生きていきます。できたら、C問題にも触れてコンテストに挑めたら嬉しいかな。