paiza times

paizaがお届けする、テック・キャリア・マネジメント領域における「今必要な情報」を届けるWebメディア

logo

paizaがお届けする、テック・キャリア・マネジメント領域の「今必要な情報」を届けるWebメディア

プログラミング初心者を卒業するための「練習問題のススメ」

f:id:paiza:20200527140141j:plain
StockSnapによるPixabayからの画像

f:id:paiza:20180910132940p:plainこんにちは。倉内です。

プログラミング学習の方法はいろいろありますが、ある程度基本をインプットしたあとは、問題を解いたりアプリやWebサイトを作成したりとアウトプットに取り組んでみるのがオススメです。

実際に自分で手を動かさないとなかなか学んだことを定着させるのは難しいですし、問題を解く・何かを作るといったアウトプットをしながら足りない部分を補っていくほうが学習も継続させやすいでしょう。

特にプログラミング学習を初めて間もない方は、練習問題などを解いてテストケースや解答コード例を見て力をつけていくのが上達の近道かと思います。

今回はpaizaラーニングの練習問題集「Cランクレベルアップメニュー」を使って、初心者からステップアップするための方法をお伝えします。

プログラミング力を伸ばす「レベルアップ問題集

レベルアップ問題集では、計算問題や文字列、図形を扱う問題、法則を見つけたりアルゴリズムを使って解く問題など多様な練習問題をご用意しています。

テストケースの入力値や一部問題の解答コード例を見ることができ、また問題についてSNS上で友人と相談したりコードを公開したりすることも可能です。

ただし、それらを閲覧するためにはチケットが必要となります。チケットは毎日初回ログイン時に1枚付与され6枚まで所持できます。(有料会員の場合はチケットの消費なしで閲覧可能です)

問題は下図のようにS・A・B・C・Dと難易度分けがされています。初めて取り組む方はDランクの問題から始めてみましょう。

難易度はpaizaが提供しているプログラミングスキルを測るサービス「スキルチェック」のランクと対応しています。

スキルチェックでも同様にプログラミング問題を解くことができますが、問題解答には時間制限がありランク取得のための挑戦は1回のみとなっています。

また、ランクはpaizaが運営する就職・転職サービスでの求人応募に関係するため、問題の解答や解説は提示していません。

そのため「プログラミングスキルを測りたい!腕試しをしたい!」という方には最適なのですが、「プログラミング問題をたくさん解いて勉強したい」という方は、時間制限のないレベルアップ問題集からじっくり取り組むほうがいいでしょう。

Cランクレベルアップメニューで目指すもの

Cランクレベルアップメニュー」は、用意されたDランク問題を順番に解いていくことで、Cランク問題をクリアするための準備ができる問題集だと思っていただくとよいかと思います。

現在、Python3・Java・Ruby・JavaScript・COBOLは全問題の解答コード例、PHPは一部問題の解答コード例を公開しています。

たとえば、Dランクの練習問題は以下のような内容が出題されます。

3の倍数のカウント(Dランク相当)

問題文:

正整数 n と、 n 個の整数 a_1, ..., a_n が半角スペース区切りで与えられます。
与えられた整数の中に 3 の倍数がいくつあるかを数え、出力してください。

入力値:

入力は以下のフォーマットで与えられます。

n
a_1 a_2 ... a_n

(補足)1行目のnが与えられる整数の個数、2行目のa_1 a_2...a_nが実際の整数を表しています。

条件:

すべてのテストケースにおいて、以下の条件をみたします。

・n および各 a_i (1 ≤ i ≤ n) は 1 以上 50 以下の整数

入出力例:

入力例1
2
4 3

出力例1
1

---

入力例2
3
1 6 9

出力例2
2

「与えられる整数を取得して、3の倍数すなわち3で割り切れる個数を出せばいい」ということが分かればよいでしょう。

Dランクが解けたら、つづけてCランクの問題を見てみます。

forループ(Cランク相当)

問題文:

パイザ君の所属する会社では忘年会の余興で次のようなゲームを行います。まず、正整数 M が発表され、参加者は手元の紙に M 個、好きな数字を書きます。このとき、紙に書く数のそれぞれは 1 以上 M 以下であり、同じ数字を何度書いても構いません。

その後、 1 以上 M 以下の数 K が発表され、各参加者は自分の紙に数字 K を書いた数だけポイントをもらい、ポイントの高い順に景品が配られます。

忘年会の参加者の人数 N と、数 M , K が与えられ、各参加者が書いた紙が与えられるので、それぞれの参加者の得点を計算して出力してください。

入力値:

入力は以下のフォーマットで与えられます。

N M K
a_{1,1} ... a_{1,M}
...
a_{N,1} ... a_{N,M}

条件:

すべてのテストケースにおいて、以下の条件をみたします。

・1 ≤ N , M ≤ 50
・1 ≤ K , a_{i,j} ≤ M(1 ≤ i ≤ N , 1 ≤ j ≤ M)

入出力例:

入力例1
3 2 1
2 2
1 2
1 1

出力例1
0
1
2

---

入力例2
4 5 2
1 3 4 4 5
2 2 2 2 2
1 2 3 4 5
1 1 1 1 1

出力例2
0
5
1
0

Dランクの問題と比べてみると問題文が長くなり、条件も少し複雑になりました。

実は今回の問題集では、1つ目に提示したDランク問題と、2つ目に提示したCランク問題の間にはこれだけの問題が用意されています。

Cランク問題の多くはDランク問題を解く際に使った方法を組み合わせて解くことができます。「Dランク問題は解けそうだけど、Cランク問題は難しいかも…」という方は、そのギャップを埋めるためにぜひ順番に問題に取り組んでみてください。

6つの問題集で学べる内容

さきほど取り上げた問題集も合わせて、全部で6つの問題集があるので紹介します。問題集一覧はこちらから

ちなみにこれからPythonを勉強しようかなという方は入門講座を公開していますので、さきにそちらを受講していただくとスムーズかと思います。


標準入出力

20200527213352

STEP: 1 単純な入出力
STEP: 2 複数行にわたる出力
STEP: 3 複数行にわたる入力
STEP: 4 入力の配列による保持
STEP: 5 半角スペース区切りでの出力
STEP: 6 改行区切りでの出力
FINAL問題: 標準入出力

プログラミング問題の多くは、与えられる値や文字列を受け取って処理し、指定された形式で出力する必要があります。

そのためいろいろなパターンの標準入力・出力のコードを書けるようにこの問題集を解いて練習しましょう。

文字列

20200527224614

STEP: 1 整数と文字列
STEP: 2 部分文字列
STEP: 3 数字の文字列操作(基本)
STEP: 4 数字の文字列操作(0埋め)
STEP: 5 数字の文字列操作(時刻1)
STEP: 6 数字の文字列操作(時刻2)
FINAL問題: 文字列

文字列の操作は基本なのでしっかりおさえておきたいですね。

この問題集を通して数値として受け取ったあとに桁をそろえるために0埋めをしたり、時刻表記にしたりといったさまざまな扱い方に慣れておきましょう。

forループ

20200528011820

STEP: 1 3の倍数のカウント
STEP: 2 フラグ管理
STEP: 3 インデックス取得
STEP: 4 多重ループ
FINAL問題: forループ

さきほど取り上げたforループを使いこなせるようになるための問題集です。

Dランクではforループを1回使って解く問題が、Cランクでは2重でループを回すなど少し複雑化します。開始・終了条件やインデックスの取り方をしっかり理解しましょう。

ソート

STEP: 1 昇順ソート
STEP: 2 降順ソート
STEP: 3 辞書式ソート
FINAL問題: ソート

ソートもプログラミング問題では頻出です。基本として、渡された複数の値を配列に格納し、昇順もしくは降順に並べ替える処理はマスターしておきたいですね。

辞書

STEP: 1 辞書の基本
STEP: 2 辞書のデータ更新
STEP: 3 辞書データの順序
FINAL問題: 辞書

辞書(Pythonではディクショナリとも言います)とは、まとまったデータをキーと値のペアで保持する型で、リストと並んでよく使われます。

入門講座のレッスン「Python入門編5: 辞書(ディクショナリ)の基礎」で詳しく解説していますので、問題が難しいと感じたら受講してみてください。

シミュレーション

20200528021836

STEP: 1 条件を満たす最小の自然数
STEP: 2 シミュレーションの練習
FINAL問題: シミュレーション

プログラミング問題では、数学的な知識を持っていると短時間で問題が解ける場合があります。

問題文中に分からない単語が出てきたり、なんらかの法則を問う問題が出てきたりしたときはWebで検索してみるとヒントが見つかるかもしれません。

(参考)Bランクレベルアップメニュー

より難易度の高い問題に挑戦するための練習がしたいという方は「Bランクレベルアップメニュー」を活用していただくとよいでしょう。

D・Cランクの問題を順番に解いていき、Bランク問題を解けるようになるために必要な考え方や解法を身につけていきます。

こちらはJava・Ruby・Python3・C#・C++・COBOL・JavaScript・PHPで解答コード例をご用意しています。

プログラミング力を試す「スキルチェック

レベルアップ問題集を解いて力がついたなと思ったら、ぜひスキルチェックに挑戦してみてください!

スキルチェックの問題は、レベルアップ問題集と違って解答に時間制限があり、実行速度や解答時間も加味してスコアを出します。その点数によって上位のランクへアップするか、とどまるかの判定がされます。(ランクが下がることはありません)

詳しくはこちら
paizaのスキルチェック

まとめ

レベルアップ問題集に追加された「Cランクレベルアップメニュー」の内容や特徴についてご紹介しました。

Cランクの問題は、問題文が正しく理解できるかも問われるため、この練習問題をたくさん解いて「要求された仕様に沿って実装をする」という力を鍛えていってください。

なお、冒頭にも書いたとおりレベルアップ問題集の問題はコードをSNSで開示したり、分からないところを相談したり教え合ったりしていただいて構いません。合わせて授業や研修で使用することも問題ありませんので、ぜひご活用ください。




これからプログラミング学習を始めたいという方には、paizaラーニングがおすすめです。Python、Java、C言語、C#、PHP、Ruby、SQL、JavaScript、HTML/CSSなど、プログラミング未経験者や初心者でも動画で学べる入門レッスンを公開しています。

Python入門編」「C#入門編」「ITエンジニアの就活準備編」といった人気講座も完全無料となっておりますので、プログラミングを学びたい方・ITエンジニアを目指したい方はぜひごらんください。

詳しくはこちら
paizaラーニング

paizaが運営する「EN:TRY」では、実務経験が浅い方や未経験の方向けの求人を多数公開しています。ITエンジニアへの転職をかなえたい方はぜひチェックしてください。

詳しくはこちら
“EN:TRY"

paizaのおすすめコンテンツ

PPG proken プログラミングゲーム「初恋 プログラミング研究会〜海に行こうよ〜」 PPG Bingo プログラミングゲーム「コードレビューBINGO!!」
paiza転職 paiza新卒 EN:TRY paizaラーニング 記事内に記載している情報は、記事公開時点でのものとなります。 Copyright Paiza, Inc, All rights reserved.