アルゴリズム問題整理テンプレートで思考の見える化!
こんにちは。企画設計室 ソフトIT担当です。
現在、新卒向けの技術研修を担当しています。
教える立場になって改めて感じるのは、「人に伝えること」を通じて、自分自身も多くの学びや発見が得られるということです。
その中で、アルゴリズムの問題に取り組む前に問題を整理してもらうための「テンプレート」を作成しました。
今回はそのテンプレートと、具体的な使い方の例をご紹介します。
アルゴリズム問題整理テンプレート
1. この問題は何を求める問題ですか?
簡単に一文で要約してみましょう。
2. 入力・出力は何ですか?
入力(ある/ない)
出力(ある/ない)
3. 制約、守るべき条件などはありますか?
(例:入力を数字に限定、文字列の長さなど)
4. 処理の流れを例で確認しましょう。
入力例( ) 出力例( )
どうしてこの結果になるのか?
5.どんな順番で処理を進めるか、日本語で記述してみてください。
必要であればフローチャートの作成も推奨します。
・使用例として、最大値を返す関数 int maxof(int x, int y)を作る処理を考えてみましょう。
使用例
1. 要約
・入力されたx, yの最大値を求める問題。
2. 入力・出力
入力:数値x, y(2つ)
出力:x, yの最大値
3. 制約・条件
int maxof(int x, int y) という関数を使うこと
4. 処理の流れの例
入力例:x=2, y=3 → 出力例:3
理由:x < y なので、yが最大値になるから 5. 処理の手順 x,yの値を入力してもらう ↓ 関数maxofにx,yの値を渡し、大きい方を返す ↓ 帰ってきた値を出力する maxofの処理: x,yの値を比較する。 x>yの場合、xを返す。
そうでない場合、yを返す。
アルゴリズムが苦手な方も、まずはこのように問題を「言語化」することで、思考が整理され、コーディングがスムーズになるはずです。
私自身、教える中で「なんとなく書いていたアルゴリズム」を改めて言語化することで、自分の力にもなっていると実感しています。
そして複雑なプログラムを書く必要がある時ほど、処理を分解して整理することの重要性が高まります。
ぜひ、アルゴリズムに苦手意識のある方はもちろん、基本に立ち返りたい皆さんもこのテンプレートを使ってみてください!
詳細はこちら