![見出し画像](https://assets.st-note.com/production/uploads/images/25777566/rectangle_large_type_2_6bb5edfefda39ce85d5d7dd5272c2c8f.jpg?width=800)
paizaスキルチェックDランク問題が解けない時の考え方
こんにちは!うゆです🍒
この記事では、paizaのDランク問題を解くための考え方・基礎知識についてまとめます。
Twitterで「どうやって解けるようになりましたか?」と質問をいただいたので、書くことにしました。
はじめてpaizaに挑戦した時、「Dランクでもう意味がわからない…どうやって解くの?」と途方に暮れましたが、少しコツを掴んだらどんどん解けるようになりました!
解けるようになるととても楽しく、遊んでる感覚なのに同時に勉強もできて本当におすすめです✨
paizaでは具体的な問題の答えやヒントを載せることは禁止されているので、ここではあくまで解くために必要な考え方などを書こうと思います😊
「Dランク解けないならプログラマ向いてない」
paizaについて調べていたら、ある記事で「Dランクが解けないならプログラマは向いていない」と書かれているのを見て、とってもショックを受けました…
それで悔しくなって、なんとか解けるようになりたい!と思い、いろいろ調べたり考えたりしたんです。
実際、Dランク問題はコツがわかったらどんどん解けます。
中にはちょっと時間を必要とする問題もありますが、たいていの問題は誰でも数分で解けるようになります。中には1分以内で解けるものもあります。
だから今解けない人も、ぜひ以下のことを試してから再度Dランク問題にチャレンジしてみてほしいです💞
paiza Dランク問題を解けるようになるまで
わたしがpaizaのDランク問題を解けるようになるまでしたことについて書いていきます。
以下の5つを試してもらえれば、必ずDランク問題は解けるようになります!
①標準入力・標準出力について調べる
まずは、「標準入力」と「標準出力」について調べましょう。
その前に、自分が使う言語を決めておく必要があります。なんでもいいと思いますが、わたしはRubyで解いていました。
「標準入力?出力?なにそれ?」と最初思っていたのですが、シンプルに言うと、標準入力=値を受け取ること、標準出力=値を出力することです。
例えば、問題文で「5と打ち込んだらそれを2倍にして返してください」と書かれていたら(例です)、5という値を受け取るのが標準入力、5を2倍にして値を返すのが標準出力です。
Rubyだと、「gets」とすることで値を受け取れるようになります。実際は受け取った値を代入して計算などを進めていくので、「a = gets」のように書くところから始まります。
実際、paizaのDランク問題を解く時にRubyを選択すると、「input = gets」と一行目に出てくるはずです。
これが値を受け取る=標準入力ということです。ちなみに、getsで受け取ると文字列になり、計算で使うことができません。その時には「a = gets.to_i」として、to_iメソッドと呼ばれるものを使うと、このaは数値として扱われ、計算に使えるようになります。
このほかにもいろいろメソッドがあります。最初のうちは、to_iメソッド、splitメソッド、chompメソッド、mapメソッドなどを知っておけば解けます。(これらの用語をそれぞれ調べてみてください)
標準出力は、Rubyの場合は「puts」とすることで可能です。
以下のように書くと、一行目で値を受け取り(標準入力)、二行目で値をそのまま出力(標準出力)することができます。
a = gets
puts a
実際はこの二行の間でさまざまな計算をする必要があります。
このように、言葉自体は難しそうですが、これがわかればあとは簡単です。また、中には複数の値を受け取るもの、複数行にわたる値を受け取るものなどいろいろあります。
これを練習できるのが、「標準入力セット」言語一覧です。この中から好きな言語を選び、標準入力をマスターしてください。
ほかには、Rubyに限りますが、Ruby標準入力から値を受け取る方法もとても参考になりました。
「入力されたものをこうやって処理するとこんな出力結果になるんだな」というのを理解できるようになる必要があります。
②四則演算について調べる
これはとても簡単です。足し算引き算掛け算割り算ができれば、Dランクのたいていの問題は解けます。
これは「各言語 四則演算」と調べると書き方がたくさん出てきます。
③問題文を難しく考えすぎない
問題文は一見ややこしく見えますが、実際にやってほしいことは単なる足し算や引き算だったりします。
「A君は10個お菓子を持っていますが、B君にn個上げたら残りは何個か出力してください」みたいな問題(例です)なら、一瞬??となるかもしれませんが、単純に答えは「10-n個」です。
Dランクはこういう問題がほとんどなので、問題文に惑わされずにシンプルに考えましょう。
④入力例をよく見る
問題文で戸惑ってしまうなら、先に入力例を見た方が早かったりします。
入力例①一行目に5、二行目に10
入力例②一行目に2、二行目に4
のような問題があったら、直感的に「一行目(標準入力)を2倍にして出力すればいいんだな」とわかります。
入力例→問題文を確認の方がわかりやすいこともあるので、よく見るようにしてみてください。
⑤問題文や入力例、したいことをヒントに検索する
基本的なメソッドや四則演算などだけでは解けないこともあります。
例えば、文字列を反対から並び替えたい時など、「ruby 文字列 反転」のように調べると答えが出てきます。
解きながらわからないことをググるのはOKとされていますが、制限時間があるので、できるだけ早くググった方がいいです。そのためググる練習にもなります。
調べる時は、問題文や入力例、したいことをヒントにキーワードを考えて行いましょう。
どういうことかと言うと、先ほどのように「文字列を反対から入れ替えたい」なら「反転」「入れ替え」といったキーワード、「数字を繰り返したい」なら「繰り返し」、のように思いつくキーワードをどんどん入れて調べます。
問題文などから何をしたいのか?を考えて、それを言語名などと一緒に検索してみましょう。
paizaの問題はどこにも答えがありませんが、自分のやりたいことと同じようなことを行っている人は結構います。
そういったものを組み合わせて、問題を解いていきます。
具体的に考えて抽象化(パターン化)する練習になる
paizaの問題を解いていると、新しいメソッドや考え方を知るきっかけになるだけでなく、具体的に考えて抽象化する練習にもなります。
入力例1、入力例2、入力例3と具体的な例を見つつ、それらすべてに当てはまる抽象化=パターン化をするという流れで、どうしたらプログラムを書いて同じようなパターンを作れるか?をひたすら考えます。
Dランクだとそこまで難しいものではないですが、それでも今までこうしたことをやったことないと頭の体操になるので、とても楽しいです!
パズルを解いて遊ぶ感覚でプログラミングのことも知れるので、暇な時にぜひやってみてください💕
何かの参考になれば嬉しいです(。•◡•。)
この記事が気に入ったらサポートをしてみませんか?