前回、SQL文の書き方(SELECT・JOINなど)を練習しました。今回は、②に戻り、これまで解いてきた過去問の中から、繰り返し出てくるアルゴリズムパターンを整理しておきます。
パターンとして捉える意味
これまで、探索・ソート・スタックとキュー・連結リスト・二分木・ハッシュ表・多次元配列と、さまざまな単元を個別に整理してきました。過去問を数多く解いていくと、これらの単元が単独で出るだけでなく、決まった組み合わせ方で繰り返し登場することに気づきました。
単元ごとの知識を持っているだけでなく、「よく出る組み合わせ」を先に知っておくことで、初見の問題でも身構えずに読み始められると感じています。
よく見かけるパターン①:配列と繰り返しの組み合わせ
配列の中身を、先頭から順番に確認しながら、条件に合う値だけを数えたり、合計したりする問題です。以前整理した繰り返し処理(for)と、配列の添字アクセスの組み合わせが基本形になっています。
このパターンは、「今何番目の要素を見ているか」「途中経過の値がどう変化しているか」の2点を、書き出しながら追うことで対応できます。
よく見かけるパターン②:探索とソートの組み合わせ
以前整理した二分探索は、あらかじめ整列された配列が前提でした。過去問では、「まずソートしてから、二分探索で目的の値を探す」という、2つの単元をまたいだ問題がよく出題されます。
このパターンでは、ソートの過程と探索の過程を、別々の作業として区切って追うようにすると、混乱しにくくなります。
よく見かけるパターン③:再帰と条件分岐の組み合わせ
以前整理した再帰処理は、必ず「終わりの条件」を条件分岐で表現します。過去問では、この終わりの条件が複雑になっていたり、複数の条件分岐が組み合わさっていたりするパターンがよく見られます。
このパターンは、以前使った「積み木のイメージ(深くなる部分・戻る部分)」に加えて、それぞれの階層でどの条件分岐が成立しているかを、あわせて書き出すようにしています。
よく見かけるパターン④:スタック・キューを使った処理の記録
スタックやキューに、値を出し入れしながら、その時々の中身を答えさせる問題です。以前整理した「本の山」「レジの行列」のイメージに加えて、出し入れのたびに、中身の状態をそのまま書き出す練習が、そのまま得点力につながっています。
パターンを知っておく効果
これらのパターンをあらかじめ知っておくことで、過去問を解くときに、「これは配列と繰り返しの組み合わせだな」というように、見た瞬間に処理の見通しを立てられるようになってきました。単元をバラバラに覚えるだけでなく、組み合わせ方まで意識することが、初見の問題への対応力につながると感じています。
次回は、③に戻り、苦手分野が見えてきた話として、科目Bの克服方法を整理します。
