1ヶ月ぶりのAtCoder!目指せ緑!
現在(2022/08/19)のレートは499の茶コーダーです。
入茶してから4ヶ月ほど経ちました。そこからレートが伸び悩み、プログラミングから離れていきました。
目標は入緑を目指して、心機一転して頑張ろうと思います。
再浮上したい。。。
課題に追われ、就活に追われ、資格試験に追われ。
疲れてしまった。
一つずつ、着実に、誠実に対応していこう。
さよなら マルチタスク
勉強、就活、レポートや課題。やらなければならないことは、いつの間にか増えています。何をすればいいのかが分からず、ゲームや漫画などの誘惑に負ける。
これは私の経験です。というより、現状です。マルチタスクに追われるという課題に対して、どんなアプローチをしていくかを私のために考えてみます。私は専門家ではないです。自分なりに考えたことを整理します。
マルチタスクという状態
マルチタスクについて自分なりに定義づけをしていきます。
- やりたいこと、やらなければならないこと(どちらもタスク)が複数あること
- 全てのタスクを処理しようとすること
- 視覚、聴覚などの五感によって、生まれる意識
他にもあるかもしれないですが、書けるだけ書いてみました。要は、タスクを複数抱えている状態と言えると思います。
マルチタスクの問題点
マルチタスクにはどんな問題点があるのかを分析します。
- タスクが多すぎで、何をすればいいのかが分からない
- タスクが多すぎてやる気がでない
これらの問題点から、結果としてタスクを処理できないということが生じます。やらなければならないタスクができてないことは最悪の結果です。また、問題点からはタスクは感情的な部分に支配されていることが多いです。
マルチタスクの原因
マルチタスクが生まれる原因が何かを探ります。
- タスクの引き伸ばしにより、タスクが積み重ねられる
- 優先順位が付けられていない
- 一度に複数のことをやろうとしている
- 複数の事を考えている
- 音や視覚情報、または課題やLINEなど外部からの刺激
タスクを生み出すのは私自身と外部(大学のレポート、友人からの連絡)などが挙げられます。私自身が生み出すタスクは競プロのことやTOEICの勉強、または観たいアニマがあるなどがあります。これらは欲求に近いところがあるので重要度が低い可能性があります。
外部の要因は私自身の行動で防ぐことができないこともあります。例えば、大学のレポートは私が求めていないことなので、必ずしないといけないタスクです。しかし、音や視覚情報は私の環境にも関わります。その点では、解決できる糸口がありそうです。
マルチタスクの回避方法
マルチタスク回避の目的はマルチタスクの状態(タスクを複数抱えている状態)の脱却です。この目的を忘れずに具体的な方法に落としていこうと思います。
0.タスクの引き伸ばしをなくす
シンプルです。タスクが生まれた瞬間に片付ければ良いのです。これがベストです。しかし、実際は時間のかかるタスクもあります。次はタスクを消すことに焦点をあてます。
1.簡単なタスクから終わらせる
時間的に負担が少ないタスクを簡単なタスクとします。
2.タスクをする時間を決める
一つのタスクをする時間は30分とします。そして、必ず30分ごとに休憩をします。
3.タスクに優先順位をつける
タスクの優先順位はタスク完了にかかる時間、タスクの重要度を基準にします。ここでいう、重要度は大学のレポートなど私的なもの以外を指すことにします。そして、優先順位が高いものから終わらせます。
4.タスクには完了状態を決める
例えば、AtCoderで茶色になるというタスクは1日で終わるものではないです。そのようなタスクに対しては、一日に過去問を5問解くなどの完了状態を設定しておきます。完了状態は達成が可能な程度にしておき、それを超える状態(一日6問解く)ということは違反とします。
5.1日に行うタスクを決めておく
1日に行うタスクの数は最大で6つとします。そして、6つのタスクは前日に決めておき、それ以外のタスクは行わないようにします。
番号をつけて書いてきましたが、かなり抽象的なものになりました。具体的かつ数字にできていることをまとめます。
- 1日のタスクは6つまでとする
- タスクは前日に決める
- タスクをする時間は30分とする
他にも、書くことがあると思いますが当面は上記のルールに従って生活しようと思います。追記の事項があれば更新をかけます。
コンテストダメだった話
競プロの勉強を始めて、1ヶ月が経ちました。そして、前日の7回目のコンテストを受けました。ボロボロだった戒めをここに残します。
結果です。A,B問題は6分ほどで解き終わりました。しかし、残りの時間はC問題を解けずに悶々としてました。最後は泣いてましたね。
コンテスト中は、本来なら解ける!できるとか思ってました。それでも、一晩たち冷静に考えるとそんなことはないですね。実際解けてないし。。。
そう!冷静に考えて、実力が足りてないのです!
勉強を開始して、まだ1ヶ月。おそらく、一つ目の山場です。ちょっと、この山超えてきます。
あっ、今回のコンテストはこちらです。
itertoolsとかいう便利なモジュール
与えられた文字列を並べ替え、辞書順でK番目に当たるのは?という問題。
この問題を解いていて出会ったモジュールitertoolsに感動したので、備忘録。
実際のに上の問題を解いたコードです。
permutationsという関数が引数にした文字列S(リスト型)の順列の全組み合わせを求めてくれます。とても、便利!!
ちなみに、このitertoolsモジュールには他にも色々便利な関数を持ってるそうです。
AtCoderで茶色を目指す 何日目だ??
そんなに頑張ってない一週間の振り返りをします。
AtCoderのお勉強
AtCoderの勉強を始めて何日目か忘れてしましましたが、今週も勉強しました。大体、1日2時間程度は時間を取りました。勉強内容は全探索や動的計画法などのアルゴリズムを勉強してます。アルゴリズムについての勉強サイトはこちら。
AtCoderに近い感覚で問題を解くことができます。これまで、なんの気なしに解いていた問題もアルゴリズムを意識したいです。
勉強時間的には確保するのが難しく、モチベーションも下がってきました。それでも、ABC221のコンテストに参加しました。とりあえず結果ですが、A問題ノーミス、B問題一回ミス、C問題ノーミスで解くことができました。パフォーマンス的にも、600台で茶色相当を出せたので良かったです。
今後の目標はA、B、C問題を早く解くことです。今回のテストでは、B問題で焦ってしまい、大幅に時間を取られました。(その上、ミスるっていうね泣)問題を解く時間を意識し、BやC問題にはどの解法を使うと早いかなどの知識をつけていきます。