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

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

ただいまの
回答率

90.51%

  • アルゴリズム

    414questions

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

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

解決済

回答 3

投稿

  • 評価
  • クリップ 6
  • VIEW 435

toshiyan

score 44

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

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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+3

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

  • 間違った学習法
    まず知識を得る。そして試験を受ける。以上。

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

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/13 22:55

    十分な睡眠をとることが重要なのですね。あまり睡眠について深く考えたことがなかったので目からウロコです。ありがとうございます。

    今まであまり自分の成長を実感できずにいたのは、睡眠を軽視して夜遅く(夜中の2時とか3時とか)までプログラミングをしていたせいかもしれません。あと、簡単な問題ばかり解いてしまっていたので、実を言うと難しい問題は避けていました。簡単な問題を、プログラミング言語を変えながら解くことしかしていなかったのです。一つの言語を使ってアルゴリズムを深く勉強しようと考えてこなかったのです。

    どうすれば毎日きちんと睡眠が取れるようになるでしょうか…というのは、また別のところで質問することにします。色々と教えて頂き、ありがとうございました!

    キャンセル

0

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    簡単な圧縮アルゴリズム

    お世話になっております。 C言語ライクの言語で、インストーラーのようなものを作ってみようと思っているのですが、 圧縮アルゴリズムが理解できません。 簡単なアルゴリズムの名称と、簡

  • 解決済

    HTTP圧縮のcompressは使用しているの?

    現在HTTPに特化したパケットキャプチャを作成しています(C++/VC2008)。 パケットを取得し、つなぎ合わせる所までは出来たのですが、圧縮された HTMLの解凍でつま

  • 解決済

    配列を用いた2分木探索のプログラムが書けない

    2分木探索のアルゴリズムは理解していますが、それをどう実装すれば良いのか分かりません。どなたか実装例をお見せいただけないでしょうか?

  • 解決済

    疑似コードの記号について

    疑似コードで記されている、両端に矢印が付いた記号や、両端が四角の記号。 それと、処理の合間に入っている棒。 これらの作用を教えてください。

  • 解決済

    入力された長文から登録されている単語をあいまい検索する方法は?

    単語から長文を検索するのは一般的な検索エンジンの動作ですが、 入力された長文から、事前に登録された単語を現実的な早さで「あいまい検索」することは可能でしょうか? また、それを作るた

  • 解決済

    NSLayoutConstraintのrelatedByの指定方法の違いがわかりません

    swiftでオートレイアウトを実現する際、二つのオブジェクトの関係性を指定する際に、NSLayoutConstraintクラスのrelatedByを指定しますよね?その際、何気なく

  • 解決済

    Stringとcharの扱い方に関する問題

     前提・実現したいこと AtCoder問題 上記のページの問題を参考にして 入力された文字列の最初の文字を取り出して、AとCの間に入れて表示するというプログラムを書いています。

  • 受付中

    サイトを作り直したら検索にヒットされなくなった

     前提・実現したいこと ワードプレスで 『●●●ドットコム』というサイトを運営しています。 今までは『●●●』と入れただけで、最上位に表示されてたのですが、 サーバを替えてサイ

同じタグがついた質問を見る

  • アルゴリズム

    414questions

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