競技プログラミング大会・AtCoderのレッドコーダーであるE8さんが、アルゴリズム発想のキホンをレクチャーします。
![【連載】Let’s 競技プログラミング! E8さんが教える アルゴリズム発想のキホン](https://cdn-ak-scissors.b.st-hatena.com/image/square/d03092ef80417725f37f16f9bf9e99d4de0d6c08/height=288;version=1;width=512/https%3A%2F%2Fnews.mynavi.jp%2Fassets%2Fcommon%2Flogo_ogp-f44b720a365aa20669d9aaed97d5885986aa7c8a16d71dc16c758ac1e4fef112.png)
0. アルゴリズムとは? まず、アルゴリズムとは何かを説明します。(0 節の説明はスライド「50 分で学ぶアルゴリズム」 の説明を参考にして書きました) さて、次の問題を考えてみましょう。 問題: 1 + 2 + 3 + … + 100 の値を計算してください。 単純な方法として、式の通りに 1 つずつ足していく方法が考えられます。すると、以下の図のように答えが計算されることになります。 これで答え 5050 が正しく求まりました。これはれっきとした アルゴリズム であり、この問題を 99 回の足し算 で解いています。しかし、計算回数が多く、計算に時間がかかるのではないかと思った方もいると思います。 ここで、方法を変えて、「1 + 100」「2 + 99」「3 + 98」…「50 + 51」の合計を求めることで、1 + 2 + 3 + … + 100 の値を計算してみましょう。 50 個の
本スライドでは、有名なアルゴリズムを概観し、アルゴリズムに興味を持っていただくことを目標にします。 第 1 部:アルゴリズムとは 第 2 部:学年を当ててみよう 第 3 部:代表的なアルゴリズム問題 第 4 部:コンピュータとアルゴリズム
1からプログラムを書く能力を問う検定 第3回アルゴリズム実技検定を無償提供 5/23(土)〜6/6(土)の期間中いつでもオンライン受験可能 検定結果に応じて参加できるオンライン就活イベントも企画中 AtCoder株式会社(本社:東京都新宿区/代表取締役社長:高橋直大、以下AtCoder)は、プログラミングスキルを可視化する日本初のオンラインプログラミング検定「アルゴリズム実技検定」第3回試験を5月23日(土)〜6月6日(土)に開催いたします。 AtCoderは、新型コロナウィルス感染症対策で外出自粛が続く状況を鑑みて、第3回アルゴリズム実技検定の受験資格を無償で提供いたします。就職・転職活動を始める学生・社会人の皆さま、プログラミングスキルの腕試しをしたいエンジニアの皆さま、受験費用がネックとなって本検定受験を控えていた皆さま、自宅待機を期にプログラミングを始めた皆さまに、無料で受験いただ
プログラミング言語のトレンドは時代とともに移り変わっても、その考え方や利用されるアルゴリズムは変わりません。ソフトウェア開発においてアルゴリズムは効率化や高速化といった恩恵をもたらすため、できれば基本から押さえておきたいところ。今回は、ユーザーの多いPythonでアルゴリズムを学べる『Pythonではじめるアルゴリズム入門』(翔泳社)から、線形探索と選択ソートの手法を紹介します。 リストから目的の値を見つけられるようになる。 データ量が多い場合の問題点を体験する。 多くのデータの中から欲しいデータを見つけることを「探索」といいます。私たちの生活の中でも、欲しいものを見つけるために探す場面はよくあります。そして、その探し方は探すものや量によって変わってきます。 実際にどのような探索方法があるのか知っておきましょう。 日常生活における探索を知る 探索を行なうのはプログラミングに限った話ではあり
はてなアプリケーションエンジニアの id:shiba_yu36 です。 最近自分が基礎的でずっと廃れなさそうな分野であるアルゴリズムを少しずつ学びたいと考えていました。しかし、アルゴリズムはあまりにも基礎分野のため、モチベーションをずっと保ち続けられるかという不安もありました。そこで周りの人も巻き込むことでモチベーションを保ち続けたいと思い、社内で勉強会を開催したいと考えました。 勉強会の教材を選定していたところ、Courseraで「Algorithms, Part I」という非常に高評価な教材を見つけることが出来たので、最近はこの教材をみんなで集まって見ながら議論をするという体裁で社内勉強会を開催しています。実際にやってみると、社内勉強会という形式を取ったのも良く、さらにこの教材を利用したことも良かったと感じています。 少しずつ社内勉強会で講義を進めていき、ようやく半分のWeek3まで終
こんにちは、谷口です。 プログラミング初心者のみなさん、アルゴリズムの勉強はしたことがありますか? プログラミングの勉強を始めたばかりの方、アルゴリズムについてしっかり勉強したことないという方にとって、アルゴリズムを「いつか勉強したほうがいいんだろうな」と思いつつも、なかなか手を出す機会がなく、いつのまにか後回しになっているものではないでしょうか。 プログラミングを始めたばかりの頃はそれほど気にならないかと思いますが、エンジニアになって実務に入ったり大規模な開発に取り組むようになったりしたときに、アルゴリズムの知識がないと 複雑な処理をしたいときにどんな書き方をすべきかわからない とりあえずわかる作り方を駆使して力技で作る あとで機能や処理を追加したり改善したりするときが大変 できる人に「もっといいやり方があるよ」と言われるけど、そのいいやり方が自分で作っているときは思いつけない といった
実際手を動かしてみて思ったのだが、3章で使った内容を4章でも発展して使い、そして5章でさらに発展させるという形で段階的にわかるようになっている構成であることに気がついた。手を動かしてみないとわからないものである・・。 ●練習問題がある 章の終わりに練習問題がある。コレの良いところは、一つに付き2~5分くらいで終わること。たくさん時間がかかると本章だけで、挫折しそうになるのに、問題がいい感じに軽いというところが乗り越えられるポイントだった ●気になっていたアルゴリズムが紹介されていた。 ナップザック問題や巡回セールスマン問題。名前は聞いたことあるけど、具体的にどうやって解くのか知らないという問題を絵付きで解き方が紹介されていてよかった。 ●メモリの仕組みビックオー記法と配列とリンクリストの紹介 どうしたら早くなるかという話だけじゃなくて、そもそもどうして遅くなるのか、どうやって値が保存されて
0. はじめに 再帰関数は初めて学ぶときに壁になりがちで なんとなくわかった...けれど どんな場面で使えるのだろう...いい感じの例を探したい! という気持ちになりがちです。再帰関数は、なかなかその動きを直感的に想像することが難しいため、掴み所が無いと感じてしまいそうです。 そこで本記事では 再帰関数の動きを追いまくることで、再帰関数自体に慣れる 再帰的なアルゴリズムの実例に多数触れることで、世界を大きく広げる! ことを目標とします。特に「再帰関数がどういうものかはわかったけど、使いどころがわからない」という方のモヤモヤ感を少しでも晴らすことができたら嬉しいです。なお本記事では、ソースコード例に用いるプログラミング言語として C++ を用いておりますが、基本的にはプログラミング言語に依存しない部分についての解説を行っています。 追記 1. 再帰関数とは 再帰の意味はとても広いです。自分自
情報科学科の卒業生やプログラマの中には、UberやNetflixのような新興企業や、 Amazon 、 Microsoft 、 Google のような大企業や、InfosysやLuxsoftのようなサービスを基本とする企業で、プログラミング、コーディング、ソフトウェア開発の仕事に就きたいと考える人が大勢います。しかし、実際にそういった企業で面接を受ける場合、大半の人が プログラミングに関してどのような質問をされるか 見当もつきません。 この記事では、 新卒生からプログラマになって1〜2年までの 経験値が異なる人たち向けに、それぞれの プログラミングの面接でよく聞かれる質問 をいくつか紹介していきます。 コーディングの面接では、主に データ構造とアルゴリズムに基づいた質問 がされますが、 一時変数を使わずにどのように2つの整数をスワップするのか 、というような論理的な質問もされるでしょう。
2007年11月26日18:15 カテゴリMathLightweight Languages プログラマーでなくても名前ぐらい覚えておきたいアルゴリズムx10 ぎくっ あなたが一番好きなアルゴリズムを教えてください。 また、その理由やどんな点が好きなのかも教えてください。 - 人力検索はてな なぜぎくってしているかというと、実はすでにアルゴリズム本の発注を受けているからなのだ。いつまでも伏せておくのもなんなので、ここにえいやっとdiscloseしてしまうことにする。 アルゴリズム大募集! C&R研究所 - トップページ その下書きもかねて、そこでも紹介しないわけに行かないメジャーなアルゴリズムをとりあえず10個紹介しておくことにする。 ユークリッドの互除法(Euclidean algorithm) その昔(数百年ほど前)は「アルゴリズム」といえば、「手順一般」を指すのではなく、この「互除法
Photo by fdecomite こんにちは。谷口です。 最近、機械学習の勉強をしている人や、機械学習関連の求人が増えてきましたね。弊社のエンジニアにも、機械学習を勉強中の人達が何人かいます。 ただ、初心者だと「機械学習を勉強したいけど、難しいし何から手を付けたらいいのかよくわからない」という人も多いかと思います。 そこで今回は、機械学習の勉強を始めたばかりという初心者の方向けに、機械学習でよく使われるアルゴリズムがわかるスライドをいくつかご紹介します。 ■機械学習以前 そもそも「機械学習で何ができるのか・どんなものなのか知りたい」という段階の人が機械学習の概要をつかむには、このあたりのスライドが参考になるかと思います。 If文から機械学習への道 from nishio www.slideshare.net 機械学習入門以前 from mrtc0 www.slideshare.net
現実世界でもコンピュータの中でも、何らかの性能指標だけを追求すると参加者にとって極端に不公平になってしまうことがある。例えばエレベータとHDDは共通点がありそうに思えないが、この2つは性能特性的にとてもよく似ていて、リーズナブルな性能と公平性を両立させるために同じ制御方法が使われている。これについてちょっと説明してみよう。 1基しかない場合のエレベータの動き方は単純だ。一度上に動き出すと、上で待ってる人や降りる人がいる限り上昇し続ける。同じように、一度下に動き出すと、下で待っている人や降りる人がいる限り下降し続ける。これ以外の動き方をするエレベータはまず存在しないので、これが唯一の制御方法のように思えるけど、別にこうしなければいけないというルールはない。 エレベータの平均待ち時間を最適化することを考えてみよう。そうすると、一方向に動き続ける代わりに、エレベータが現在存在する階に一番近い人の
今の場合は A さんが 31 歳の場合のストーリーでしたが、A さんが 20 歳~ 35 歳のうちのどの年齢であったとしても、似たようなストーリーで必ず 4 回の質問で当てることができます!(他の例も是非考えてみてください。) ちなみに、このような「真ん中で切ってどちらかに絞って行く」タイプのアルゴリズムには二分探索法という名前がついています。応用情報技術者試験でも頻出のテーマですので馴染みのある方も多いと思います。 1-2. つまり、アルゴリズムとは 上の年齢当てゲームという問題では、相手の年齢を当てる「方法・手順」を二分探索法に基づいて導きました。このようにアルゴリズムとは、 問題を解くための方法・手順 のことです。さて、アルゴリズムと聞くと「コンピュータ上で実装されたプログラム」のことを思い浮かべる方も多いと思いますが、必ずしもコンピュータと関係がある必要はなく、日常生活でも多々登場
アルゴリズムを楽しく学ぼう! 独習に役立つWebサイト・参考書・競技プログラミングを紹介〈13選〉 プログラムの性能を改善して開発スピードを向上させるため、アルゴリズムを気軽に、かつ楽しく学べるWebサイトや書籍など、13種類のさまざまなコンテンツを紹介していきます。 アルゴリズム(algorithm)とは何なのでしょうか? 例えば、 Wikipediaにはこうあります。 アルゴリズムとは、数学、コンピューティング、言語学、あるいは関連する分野において、問題を解くための手順を定式化した形で表現したものを言う。 「問題を解くための手順を定式化した」とは、ソフトウェアエンジニアにとって「プログラミング」のことです。 みなさんも日々の開発業務において、問題(要件)を解くための手順を考え、その手順を特定のプログラミング言語で表現していませんか? アルゴリズムは、一般に「ソート(整列)」や「探索」と
機械学習のアルゴリズムの中には�名前のついていない「素朴な方法」がある。 複数の方法を組み合わせて使っている場合に�素朴な方法を無視して混乱が生まれる。 そこで素朴な方法にライトを当てて、�各種アルゴリズムを図解することで�「あー、こういう組み合わせで動いてんだ」�とわかってもらう。 Read less
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く