質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

3回答

3056閲覧

アルゴリズムの思考を身につけるために何をすればいいか

toshiyan

総合スコア74

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

6クリップ

投稿2018/01/13 03:17

アルゴリズムの勉強で行き詰まっています。

アルゴリズムの問題を趣味でよく解くのですが、中々次の段階に進めずに悩んでいます。今私が解ける問題は、計算時間を気にせずに解けるシンプルな問題ばかりです。

この方法だとO(logN)で解けるからこちらの実装が正しいとか、そういった選択ができません…。

AtCoderというサイトはご存知でしょうか?簡単な問題から難しい問題まで揃っているのですが、私の実力は、AtCoder Beginner Contestを全問解けるかどうか?くらいのレベルです。C〜D問題は、解けることもありますが解けないこともあります。

どのような努力をすれば、次のステップに進むことができるでしょうか?何かお勧めの本、サイトなどありましたら教えてください。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

アルゴリズムの学習だけではなく受験勉強でもなんでもそうなのですが、学習の仕方を間違っている人が多いと思います。

  • 間違った学習法

まず知識を得る。そして試験を受ける。以上。

  • 正しい学習法

まず試験を受ける。失敗する。失敗したところを成功するまで学習する。学習した日は十分な睡眠をとる。時々復習する。

間違った学習法では身に付きません。
得なければならない知識が少ないならそれでもいいのでしょうが、通常はそれを下敷きにしてもっと範囲の大きな知識を得なければなりません。
この時に身につかない学習法を繰り返すのは乾いた砂で城を作っているようなものです。

AtCoder でアルゴリズムを身に着けようとするなら、まず自分のできないランクに挑戦してください。
時間制限があるでしょうから、おそらく失敗するでしょう。
そうしたら本を読んだりネットを調べたりせず、まず自分の力でどうにかしてその問題を解いてください。
結果的に解けなくても十分な時間をかけて悩んでください。
十分な時間がどの程度なのかは人によっても問題によっても違いますが、少なくとも分単位では話になりません。

そしてその日は十分な睡眠をとってください。
この睡眠が大事です。この間に海馬と大脳の間でデータが共有され、脳が改造されます。
次の日はレベルアップした脳で問題に取り組むことができます。
睡眠がとれなければやり直しです。

十分な睡眠をとったあとなら本やネットを調べて構いません。4

試験というのは目的ではありません。
自分がどこまでできるか、次に何をしなければならないかを計る物差しです。

投稿2018/01/13 06:55

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiyan

2018/01/13 13:55

十分な睡眠をとることが重要なのですね。あまり睡眠について深く考えたことがなかったので目からウロコです。ありがとうございます。 今まであまり自分の成長を実感できずにいたのは、睡眠を軽視して夜遅く(夜中の2時とか3時とか)までプログラミングをしていたせいかもしれません。あと、簡単な問題ばかり解いてしまっていたので、実を言うと難しい問題は避けていました。簡単な問題を、プログラミング言語を変えながら解くことしかしていなかったのです。一つの言語を使ってアルゴリズムを深く勉強しようと考えてこなかったのです。 どうすれば毎日きちんと睡眠が取れるようになるでしょうか…というのは、また別のところで質問することにします。色々と教えて頂き、ありがとうございました!
guest

0

蟻本やアルゴリズムに関する参考書を読み、体系的に得られたアルゴリズムのテクニックやTipsをコーディングで実践してみてはいかがでしょうか?
一般的な参考書であれば基礎クラス→応用クラスの順にアルゴリズムの手法を説明されているはずです。

これと並行してAOJ、AtCoderやTopCoderのような競技プログラミングに挑戦し、trial & errorでアルゴリズムを使う感覚を身に付けるのが良いと思います。

投稿2018/04/09 09:51

編集2018/04/09 09:53
arch_

総合スコア158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問