競プロプレイヤー
聴く音楽のラインナップが固定化されてきた苅田です。
一曲だけGreeeenの愛唄とかなり古い曲が混じってて外すかどうか迷ってましたが結局外すの忘れてそのままでした。
さて、今日は題名にもある通り競プロについてのお話をしたいと思います。
競プロとは競技プログラミングの略で数学の問題みたいなものをプログラミングでいかに早く解くかというのを競い合います。
日本でよく使われる競技プログラミングのサイトとしてAtCoder、Paizaなどがあります。(Paizaは転職サイトなので競技プログラミングというより転職時のスキルチェックという要素が強いですが難易度は低めなので入門にはうってつけです。)
AtCoderは毎週土曜日(コンテストによって異なります)にコンテストが開かれコンテスト中に問題を解ければレートを上げることができますが、参加しなければどんどんレートが下がっていきます。
Paizaは公開されている問題を解けばレートが上がります。
実際にAtCoderの練習問題を解いてみましょう。
意訳すると入力されたN個の整数がすべて偶数の時、2で割った数字に置き換える。何回操作したときにすべてが偶数でなくなりますか?
これをPHPで解いていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php $n = trim(fgets(STDIN)); $arr = explode(" ", trim(fgets(STDIN))); $count = 0; while(true) { if (!isAllEven($arr)) { echo $count; return; } foreach($arr as $i => $value) { $arr[$i] = $value / 2; } $count++; } echo $count; function isAllEven($arr) { foreach($arr as $value) { if ($value % 2 != 0) { return false; } } return true; } |
処理の流れを見ていきましょう。
- まず何個の整数を入力するかのnとn個の整数を入力する処理があります。
PHPの場合nは使うことがないので関係ないですが、競技プログラミングの性質上処理速度を求めるので本来はC、C++向けなのでnというものが設けられてます。
- whileで無限ループしています。
競プロではよく使います。
- 全てが偶数かどうかを判別する。
isAllEven関数の中ですべてが偶数か判断しています。偶数でなかった時点でfalseを返し終了します。これは早期リターンという考え方で無駄な処理をせずに済みます。ifの条件式で!isAllEvenとしています。これも同じ理由で偶数でないものが一つでも含まれているをわかった瞬間countを出力してプログラムを終了します。
- 配列の中を2で割った値に更新する。
先ほどすべてが偶数かどうかの判断をしたのでこの処理にたどり着くときはすべてが偶数であると保証されています。なので2で割った値に更新します。
- 最後にcountを出力して完了
問題が解けたらページ下部で言語でPHPを選択しコードをテキストエリアに張り付けましょう。
提出ボタンを押して
ACとなればOKです。
そのほかにWA(Wrong Answer)RE(Runtime Error)がありますがAC以外は間違っています。
ちょっとした頭の体操レベルの問題も多数あるので暇な時間などに挑戦してみてください。
ちなみにAtCoderは色でランク分けされますが、少し話に出てきたPaizaにはわかりやすくSABCDのランクが設けられています。僕は現在ど真ん中のBランクです。
- 最新の投稿
-
- 2024.11.20今でも見たくなる古いアニメ その①「エスカフローネ」
- 2024.11.18長年寄り添った彼氏との別れ
- 2024.11.14選挙の年ですね
- 2024.11.14ニュースでは見て知ってはいたけど・・・初めての経験
- 2024.11.13iMac M4発売
- タグ
-
- Analytics (3)
- BBQ (1)
- Canva (1)
- Firebase (1)
- GAS (1)
- Google (3)
- javascript (2)
- jQuery (1)
- news (4)
- saver (1)
- thunderbird (1)
- TIPS (9)
- vue.js (2)
- youtube (1)
- おやつ (2)
- お勉強 (2)
- お昼休み (1)
- お花見 (1)
- お金 (1)
- たつの (1)
- なぎさ公園 (1)
- ゆかた祭り (1)
- アクセサリー (1)
- アメカジ (2)
- ウエスタン (1)
- ウォーキング (1)
- カフェ (1)
- カラオケ (1)
- グルメ (11)
- ゲーム (1)
- コロナ (2)
- サブカルチャー (1)
- システム (3)
- ファイヤーキング (1)
- ファッション (1)
- ホームページ (1)
- マスク (1)
- マッサージ器 (1)
- モッズ (1)
- ラテン (1)
- 仕事 (1)
- 便利ツール (3)
- 健康 (2)
- 動画 (1)
- 化け猫懸垂 (8)
- 夢 (1)
- 姫路 (46)
- 姫路文学館 (2)
- 娘 (7)
- 工場夜景 (1)
- 日常 (114)
- 日本玩具博物館 (1)
- 本 (1)
- 献血 (1)
- 珈琲 (1)
- 短歌 (1)
- 神戸人形 (1)
- 筆記用具 (1)
- 網干 (2)
- 育児 (3)
- 花火 (1)
- 藤原正彦エッセイコンクール (2)
- 見学 (2)
- 観光 (1)
- 観葉植物 (1)
- 電車 (1)
- 音楽 (4)
- 香水 (1)
- 高砂 (2)