paiza開発日誌paiza開発日誌IT/Webエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。ITエンジニア向け総合求人・学習サービス「paiza」の開発者が、プログラミングやITエンジニアの転職などについて書いています。Secureこんにちは。paizaではプログラミング問題を解いて、プログラミングスキルをS・A・B・C・D・Eの6段階にランクづけするスキルチェックというサービスを提供しています。ランクを取得するとpaizaの就職・転職サービスで書類選考なしに求人へ応募できますが、ご自身のプログラミングスキルを測る腕試し感覚で利用してくださる方も多いです。プログラミング初心者の方は、まずDランクの取得を目指してみてください。Dランク問題はプログラミング言語の基礎文法が習得できていれば解くことができます。続いてCランクに挑戦していただきたいところですが...Cランクの問題はプログラミングを始めたばかりですとなかなか難しいと感じる方も多いようです。そこで今回は、Dランクを取得した方が初めてCランク問題にチャレンジする際にどのように取り組んだらよいかを詳しく解説していきたいと思います。paizaラーニングではスキルチェックを解説する動画講座「スキルチェック入門編」を公開していますので、そちらもぜひチェックしてみてください。前述のとおり、スキルチェックとは難易度別に分かれたプログラミング問題を解いて、プログラミングスキルを測るサービスです。Webブラウザ上でコードを書いて提出し、実行速度や解答時間も加味してリアルタイムで採点をおこないスコアを出します。その点数によって上位のランクへアップするか、とどまるかの判定がされます。(ランクが下がることはありません)スキルチェックについて詳しくはこちら標準入力をマスターするスキルチェックで出題される問題の多くは、システムから与えられた値を取得して利用する必要があります。これを「標準入力から値を受け取る」と言います。慣れないうちはその部分の処理を書くのにつまずく可能性があるので、初めて挑戦する方は以下の記事で紹介している標準入力解説動画をごらんください。paiza.hatenablog.comスキルチェックが何者か分かったので、さっそく問題にチャレンジしてみましょう。冒頭で述べたようにスキルチェックの本問題は求人への応募と関係しますので、解答コードの公開や解説は禁止させていただいています。そのためここからは「プログラミング練習問題」を活用して、Cランク問題を解く道筋を解説していきたいと思います。パズルを解くものなどバラエティに富んでいるので一概には言えませんが、だいたいは以下のようなイメージです。ループ文を使いこなせれば解くことができる。条件分岐がある場合、単純な条件で2、3の分岐で済む。ループ文・配列を複数組み合わせて解く必要がある。多重ループや複雑な条件分岐が要求される問題もあり、境界値に気をつけないとIndexエラーの発生や通らないテストケースが出てくる。Cランク問題が難しく感じるのは、問題文で求められた内容を一気にコードにしようとしていることが一つの原因だと思います。そのためまずは問題内容をひとつひとつ分解してDランク問題レベルの処理に落として考えるという方針を立てます。問題を解く際に必須となるプログラミング言語の基礎文法は、paizaラーニングの言語別入門講座で網羅していますので、まず先にそちらを受講していただくとスムーズに取り掛かれます。Dランク相当の練習問題を解く練習問題ページには、プログラミング問題がスキルチェック同様にS~Dのランク別で用意されています。実際に元々はスキルチェックの本問題だった問題もあります。今回はCランクに取り掛かる前に以下の練習問題を解いて基本文法をおさらいします。※各練習問題のリンク先はPython3での回答ページとなっていますが、練習問題トップからアクセスしていただくと好きな言語を選択できます。N行のデータの入力(N行の標準入力の値の受け取り)数の並び替え(リスト内の値のソート)【競技1】合格判定(条件分岐)【早解14】0から9までのカウンタ(ループと特定条件での分岐処理)コードは練習問題の解答エリアで実行するか、paiza.IOを使って実際に手元で動作確認していただくと理解が深まるかと思います。問題:標準入力で1行目でNが与えられ、続くN行の各行で文字列が与えられます。それらを順にそのままN行で出力してください。半角スペースコード:paizaラーニングの公式YouTubeアカウントで公開している解説動画とは少し異なるやり方で解いてみました。print(word_list[i])数の並び替え問題:1行目で正の整数nが入力され、続くn行の各行で整数が1つずつ入力されます。n個の整数を小さい順に改行区切りで出力してください。1000コード:さきほど書いた「標準入力から与えられた値をリストに格納する」をここでも使いましょう。リストに入れたあと、リスト内の整数を「小さい順(=昇順)」にソートしておけば、あとはそのまま順に出力するだけでよさそうです。ここで、Pythonでリスト内の昇順ソートをどう書けばよいかすぐ分からなくてもググれば大丈夫です。昇順ソート」でキーワード検索した結果から、sortメソッドを使うとうまくいきそうだということが分かりました。print(num_list[i])ちなみに、スキルチェック本問題でも言語の文法や機能について自分で調べるのはOKです。問題:あなたはとある試験の合格判定をする仕事をします。この試験は80点以上で合格です。解答者の得点nが与えられるので合格(pass)か不合格(fail)を出力してください。100コード:単純な条件分岐ですが、「80点以上」という条件に気をつけましょう。print("fail")【早解14】0から9までのカウンタ問題:0から9までを数えるカウンタを考えます。9このカウンタの拡張として、任意の数から始められるカウンタを考えました。1入力から数字nを受け取り、nからカウンタをスタートさせて、カウンタの値を順番に10個改行区切りで出力するプログラムを実装してください。9コード:この問題は実はDランク相当にしては少し難しい問題となっています。19までカウントしてまだ10個出力していないなら0に戻るという条件を考慮する必要があります。練習問題の回答ページではn=0のケースしかテスト実行ができないため、paiza.IOを利用して複数のテストケースで正しい結果が得られることを確認しました。1Cランク相当の練習問題を解くいよいよCランクに挑戦です。今回は練習問題の「奇数大好き山田さん」を解きます。地道な解き方をするので、スマートな解き方を知りたい方はこちらの解答コード(ただしRubyとPHPのみ)を参照してください。問題:あなたは奇数が大好きな山田さんと数字の仕分けをすることになりました。仕分けをする数字が与えられますので、奇数であるものを小さい順に改行区切りで出力してください。1行目で正の整数nが入力され、続くn行の各行で整数が1つずつ入力されます。10000解き方:<ポイントとなる箇所>・与えられた数字のうち奇数のみを取り出す・取り出した奇数は小さい順に出力する必要がある<方針>以下の4ステップで解くことにしました。見てみると、さきほどDランク相当の問題を解いたときの処理が結構使えそうですね。標準入力から与えられるn行の値をリストに格納するリスト内の値のうち奇数のみを別のリストに移す奇数のみのリスト内の整数を小さい順(=昇順)にソートするソート後のリストから値を順番に改行区切りで出力する値の奇数・偶数判定の処理が分からない場合は検索してみてください。「割った余りが0に等しければ偶数、0でなければ奇数」という処理を書くとよいことが分かると思います。余りを求めるには「%」を使います。print(odd_list[i])さきほどと同じく、練習問題の回答ページでは1ケースしかテストできないので、paiza.IOで自分でいくつかテストケースを作成して正しい結果が得られることを確認してから提出しました。自分でテストを実施することで単純ミスを減らすことができ、惜しい減点を避けることができます。この問題はCランクの中でも比較的易しい問題ではありますが、どのような問題でも解答のステップを整理してひとつひとつコードに落としていくことで道筋が見えてきます。文字列を扱うCランク問題も参考までに解いておきます。問題:あるスーパーでは、お一人様一点限りでセール価格の商品を販売することにしました。そこで、一人のお客さんが2回以上その商品を買えないように、お客さんの名前をチェックすることにしました。お客さんn人の名前が来た順番で入力されるので、そのお客さんが初めて来た(YES)・初めてではない(NO)を判定し結果を出力してください。同じ名前のお客さんはいないこととします。10方針:リストにお客さんの名前を格納するその名前がリストに初めて格納されたことを「1つだけ存在すること」で判定する検索してみると、リスト内に指定した値と同じ要素がいくつ存在するかを取得するには、countメソッドを使うとよいことが分かります。print("NO")まとめCランク問題は、問題文を見ただけだと「Dランクと全然違う...難しい......」と思いがちですが、実はじっくり見てみると分解すれば解けそうということが分かりました。そのため初心者の方はまずはDランク問題をたくさん解いて武器を手に入れ、Cランク問題を解くときにそれらを組み合わせて戦えるようにしておいてください。ここまでやってみて「なんかCランク取れそう!」と感じていただけたらうれしいです。スキルチェックの本問題にもチャレンジしてみてください!「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。詳しくはこちらそしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。13:00Tweet関連記事2023-04-10【解答例あり】新作プログラミングゲーム『異能な僕らと異常な世界』を攻略!本日、新作プログラミングゲーム『異能な僕らと異常な世界』を...2022-10-17プログラミングスキルを引き上げる!レベル別問題集と動画講座をまとめて紹介こんにちは。paizaでは、定期的にプログラミング問題...2022-03-01グラフを隣接行列・隣接リストで実装しよう!アルゴリズムを学べるプログラミング問題集こんにちは。ある程度プログラミングの基本を学び終...2021-06-21Pythonのリストをマスターする!基礎から多次元リストまで徹底解説こんにちは。プログラミング学習を始めたばかりの方...2020-06-30Pythonで魔方陣のプログラミング問題を解くための考え方Pixabayからの画像こんにちは。記事内に記載している情報は、記事公開時点でのものとなります。reserved.引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。