こんにちは。倉内です。
プログラミングをしていると「もっと効率のよいコードの書き方はないだろうか?」「もっと処理を速くできないだろうか?」と思うことがありますよね。
やり方はいろいろありますが、基本的なアルゴリズムや計算量の知識を得ていると、それらを解決する助けになります。
ただ、独学でアルゴリズムを学ぶのは難しそうだと考えている方も多いのではないでしょうか。
そこで今回は、paizaラーニングに新しく追加された動画講座「新・アルゴリズムとデータ構造入門(Java編)」でアルゴリズムとは何かから順に学んでいきましょう。
新講座「新・アルゴリズムとデータ構造入門」
受講対象者
アルゴリズムを学習したい方、言語の入門講座を学習してプログラミングの文法が身についてきた方、プログラムの処理速度やメモリの使用量の効率についてより良い方法を理解しながらプログラミングしたい方、paizaのスキルチェックの対策をしたい方など。
本レッスンで身につけられるスキル
まず、アルゴリズムとデータ構造とは何かを学びます。「そもそもアルゴリズムという単語はよく聞くけど何なのかよくわからない…」という方はここから始めるとよいでしょう。
今後は以下の定番のアルゴリズムに関する内容を追加していく予定です。
- スタック・キュー
- 計算量の見積りとO記法
- 線形探索
- 二分探索
- 幅優先探索・深さ優先探索
- 愚直なソート・高速なソート
- 素数の判定や列挙
- ユークリッドの互除法を用いた最大公約数と最小公倍数の計算
など
競技プログラミングで問題を解くのが好きな方、将来エンジニアに就職・転職したいと考えている方は知っておいて損のない内容ばかりです。
今後順次公開していきますのでお見逃しなく!
アルゴリズムが学べるコンテンツ
paizaラーニングには他にもアルゴリズムに関する学習コンテンツを複数公開しています。
環境構築することなく、ブラウザ上でコードを書いてコード実行ができるため、学んだ内容をすぐ自分で書いて身につけていくことができます。
学習講座「アルゴリズム入門編」
FizzBuzz、フィボナッチ数、巡回セールスマン問題といったメジャーなアルゴリズムを動画講座で学ぶことができます。
技術面接*1で出題されるテーマとしてもよく取り上げられます。
プログラミング練習問題「レベルアップ問題集」
この練習問題集はやさしい問題から順に解いていくことで、難しい問題(FINAL問題)まで段階的に理解を深めて、最終的には自力で解けるようになることを目指した作りになっているという特徴があります。
ここでいう難易度はpaizaが提供しているプログラミングスキルを測るサービス「スキルチェック」で出題される問題と対応しています。スキルチェックでは、S・A・B・C・Dランクに分けられた問題(Sがもっとも難しい)を決められた時間制限内に解く必要がありますが、レベルアップ問題集では時間制限はありません。
導入におすすめ
アルゴリズムに関する問題集も多く公開しており、まずは導入におすすめなのが「スタック・キューメニュー」「線形探索メニュー」です。これからアルゴリズムに本格的に取り組みたい方は押さえておくとよいでしょう。
本格的な問題を解きたい方におすすめ
もう少し本格的なアルゴリズムの問題を解いてみたい方におすすめなのがソートアルゴリズムの問題集です。
さきほど線形探索の問題集を紹介しましたが、もう少し発展した探索に関する問題集もあります。
さらに中・上級者には「ユークリッドの互除法メニュー」「DPメニュー」「グリッド版ダイクストラ問題セット」などもあります。ぜひ挑戦してみてください!問題集一覧はこちら
まとめ
paizaラーニングで新しく公開された「新・アルゴリズムとデータ構造入門 Java編」の紹介と、その他にもアルゴリズムを学べるコンテンツを紹介してきました。
アルゴリズムはなんとなく難しそうなイメージがあると思いますが(もちろん中には数学的な知識が十分でないと理解できないものもありますが…)基本的なところから順に理解していけば、十分独学ができます。
ただし、インプットしただけではコードを書けるようになるのは難しいため、記事中で紹介した問題集やスキルチェックを利用して、たくさんコードを書いてみてください。
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら
*1:エンジニア職の採用選考で、コードを書いて解くプログラミング問題が出題される試験のこと。もしくは基本的なアルゴリズムやコンピューター原理の基礎を問うことも。コーディングテスト、コーディング試験、技術面接などと呼ばれている。