programming

paizaのSランク取得とD問題の全埋め

とりあえず全提出データをPythonでスクレイピングしてまとめました

You can share this article with

D 問題を埋めた

この行為に意味があるか分かりませんが、早解きすると順位が出るので Python に慣れた今の断面で一気に D 問題を解ききりました。
たまに問題文をちゃんと読んでなくて AC できなかったりするとレートが 50 以上ぶっ飛ぶのが厳しいポイントです(いくつか喰らいました)。

終わってみるとこれ意外と効果あって、基本処理に悩むことがほぼなくなった感じです。
いろんな言語さわるほど「この言語だとこの処理どう書くっけ」みたいなのがありますが、少なくとも Python なら息をするように手が動くよう(な気がする程度)にはなりました。

現状の実力

一応、paiza では S ランクになったものの、難しい問題だとなんのアルゴリズム使えばいいかすら見当がつかないのが普通にあります。 この記事執筆時点での AtCoder の平均パフォが 600 くらいのまだまだビギナーです(執筆時点では灰でした)。

知ってるアルゴリズムとしては、以下に挙げるくらいでまだ難しいのはあんまりわかっていません。

  • BFS
  • DFS
  • GCD/LCM
  • エラトステネスの篩
  • Union-Find
  • 累積和
  • ゼータ変換・メビウス変換(多次元累積和の演算回数圧縮)
  • DP(最大・最小変換くらいまで)
  • バイナリサーチ(めぐる式)

ついでに AOJ の ITP1 も全部埋めた(追記)

こっちは Python でなくて C++を練習しようと思って全部埋めました。

D 問題埋めをして、基本問題のノックが思った以上に効果的で、ノック終わってから 1 週間くらいしたコンテストで水パフォが出ました。プログラミング、完全にスポーツとか楽器の類ですね。

というか個人的には、音ゲー得意な人は競プロとか好きそうな気がします。

最短で S ランクを目指すならどうするか

これから S ランクを目指す人の参考になればと思い独断と偏見で書きます。
最短の方法を考えると、そもそも S に挑むにあたっては「D 問題は 1 分切るよね」くらいには基本の入出力は出来ないとおそらくしんどいです。

とはいえ、私自身も Python 始めてまだ 3 ヶ月ですが、普通に 1 位を量産できているので安心してください。全然無理な話ではないと思います。
それこそ最初は D 問題を埋めたりして頑張っていけばなんとかなるんじゃないかと。

C++みたいにおまじないが多い言語と違って Python なら基本処理周りは超シンプルに書けるので、普通にやってれば半分も埋める頃には 1 分切れると思います。

あとは、基礎学力はわりと重要だとは思います。 競プロってなんだかんだプログラミング版の受験問題みたいな感じなので。

とはいえ、学力が東大レベルじゃないと無理とかいうことは全然なくて、それこそ MARCH レベルくらいで全然十分でしょう。
当たり前ですが paiza には学力だけでなくプログラミング技能も効いてくるので、学力で S ランク相当の上位 2%に入る必要はありません。

今調べたら、MARCH が同世代人口比の上位 10%にギリ入らないくらいの比率らしいでそんなに外れたことは言ってない気がします。
プログラミングと学力の掛け算で上位 2%に入ればいいのです。
(書いてから気付きましたが、AtCoder 社長のchokudaiさんの記事でも同じようなことが書かれていました。)

個人的に、中学受験勢とかはめちゃくちゃ強いんじゃないかなって思ってます。

以上に挙げたくらいの素養はあるということを前提に最短で取りに行くなら、以下が結論です。

蟻本の初級編だけガチって習得したあと、S 問題の番号が若い方から順に解き、運良く満点がとれればオッケー。

これまでの全結果

paiza のサイトだと情報が一元化されていないので、Python でスクレイピングしてまとめました。

JavaScript で提出してるやつは日付が若いですが、これは JavaScript 始めたてのころにやった問題です。 どれくらい始めたてかというと「progate の JavaScript 編をスライドだけ見て勉強してきたぜ!」くらいなのであまり参考にならない気がします。

問題タイトル順位提出日言語回答時間ランク点数
S032回覧板の回す先4609/16Python336′43″B30 点
S028ネックレスの等分4709/15Python3110′57″B30 点
S023村人の友好関係1309/04Python338′38″A80 点
S024海面の調整4010/22Python365′36″B50 点
S013理想のタイムトラベル1709/04Python3161′38″A92 点
S009辞書順最小1910/23Python331′31″B70 点
S002最短距離を測る1210/22Python334′2″S100 点
A035試験の作成4406/16JavaScript30′35″C30 点
A028武器の強化3206/15JavaScript57′44″B50 点
A023週休 2 日制2205/08JavaScript27′12″B80 点
A018美術館のセキュリティ1406/16JavaScript85′4″B72 点
A015敷き詰めパズル-06/16JavaScript46′7″E0 点
A005パイザボウルゲーム409/04Python332′55″A100 点
B084オススメのお店1510/23Python312′12″B90 点
B078動画視聴スケジュール-05/11JavaScript53′7″E0 点
B074コメントの順序810/22Python331′34″B100 点
B055タクシー料金1605/07JavaScript23′25″B100 点
B043ねずみ小僧110/22Python313′42″B100 点
B041繰り返し模様1510/22Python331′47″B100 点
B022選挙の演説3005/07JavaScript58′35″B89 点
B021複数形への変換3505/07JavaScript49′34″C76 点
B016ここはどこ?1905/11JavaScript35′30″B100 点
C084枠で囲む110/25Python31′12″C100 点
C080ボタンを押すゲーム1206/24JavaScript13′15″C100 点
C075ポイント払い806/16JavaScript9′48″C100 点
C073うさぎとかめ4906/17JavaScript19′36″D10 点
C043使用回数の調査2406/16JavaScript28′0″C72 点
C039古代の数式1906/17JavaScript7′4″C100 点
C016Leet 文字列3005/07JavaScript19′26″C100 点
D007N 倍の文字列110/24Python30′24″D100 点
D166何日後になるか210/22Python30′23″D100 点
D167買い物袋610/22Python31′6″D100 点
D165安全な数字310/24Python31′43″D100 点
D164区切りの良い日510/24Python32′24″D100 点
D163縦にする110/22Python30′20″D100 点
D160N 合目の高さ210/22Python30′42″D100 点
D162お米の重さ210/22Python30′24″D100 点
D161貯水タンク310/22Python31′24″D100 点
D159短冊の大きさ110/24Python31′5″D100 点
D157信号の組み合わせ1306/15JavaScript1′40″D100 点
D158湿度の確認3806/16JavaScript3′28″D100 点
D156密度の計算110/22Python30′34″D100 点
D155入館料の計算310/24Python31′26″D100 点
D154画面の構成110/22Python31′0″D100 点
D153食材選び1806/17JavaScript6′0″D100 点
D152部分点4804/05C++35′56″D81 点
D151お菓子のプレゼント310/22Python31′21″D100 点
D150達成の確認510/22Python31′8″D100 点
D149文字のだるま落とし110/24Python31′10″D100 点
D148ある試験の境目210/22Python31′8″D100 点
D147桶の水量210/24Python30′54″D100 点
D146単語の省略110/22Python30′56″D100 点
D145ゲームのスタミナ310/22Python30′43″D100 点
D1445 桁の数字210/22Python30′53″D100 点
D143制動距離の計算-06/17JavaScript1′47″E0 点
D142イルミネーションの数306/17JavaScript2′46″D100 点
D139少ない方の勝ち1806/17JavaScript5′36″D100 点
D140N 番目の単語810/22Python31′19″D100 点
D141縦書きと横書き710/24Python31′20″D100 点
D138おうむ返し410/22Python31′37″D100 点
D137契約の交渉110/22Python30′36″D100 点
D134タイトルの長さ210/22Python31′31″D100 点
D133株の利益406/17JavaScript1′51″D100 点
D136空港の呼称406/28JavaScript0′41″D100 点
D135多角形の調査110/22Python30′49″D100 点
D132N 回ゲーム610/22Python30′59″D100 点
D131脱出ゲーム110/22Python31′23″D100 点
D129税率の変更210/22Python31′21″D100 点
D128略語の生成1210/22Python32′48″D100 点
D127座席番号のくじ110/22Python31′3″D100 点
D126点数の計算2906/28JavaScript2′2″D100 点
D125万歩計210/24Python31′4″D100 点
D124あと何日310/24Python30′45″D100 点
D123自動でチャージ1306/27JavaScript1′49″D100 点
D121A から R へ110/22Python30′47″D100 点
D122足して 0 になる数110/24Python30′33″D100 点
D120鉛筆の数510/22Python30′34″D100 点
D119円周率の日210/24Python30′55″D100 点
D118こよみの変換1010/22Python32′46″D100 点
D117すごろくのサイコロ310/22Python31′2″D100 点
D115おかしの二等分310/22Python30′51″D100 点
D116サービス料金210/24Python30′43″D100 点
D114税込の価格110/24Python31′2″D100 点
D112工場の生産力406/17JavaScript0′46″D100 点
D113初日の出410/24Python32′37″D100 点
D111文字を切り詰める306/19JavaScript1′23″D100 点
D1103 つの数字210/22Python30′33″D100 点
D109ゾロ目の日付506/17JavaScript5′1″D100 点
D108薬の効き目210/22Python30′59″D100 点
D107文字列を囲う2206/27JavaScript1′33″D100 点
D106割った余り710/22Python30′47″D100 点
D105長さの一致1710/22Python31′51″D100 点
D104送料の計算210/22Python31′3″D100 点
D103逆さ読み210/22Python30′32″D100 点
D102運賃の計算106/17JavaScript0′33″D100 点
D101偶数派と奇数派1706/17JavaScript4′48″D100 点
D100区切り文字の統一110/24Python31′17″D100 点
D099短冊づくり110/22Python30′33″D100 点
D098ボーナスの計算1106/17JavaScript1′9″D100 点
D097梅雨入りの予想110/22Python31′21″D100 点
D096含んではいけない文字310/24Python31′16″D100 点
D095ジュースの分配1506/17JavaScript1′56″D100 点
D093切りの良い番号410/24Python31′55″D100 点
D092花見の準備1906/17JavaScript8′49″D100 点
D094犬派か猫派か110/24Python31′13″D100 点
D091花粉の予報110/22Python31′32″D100 点
D090下一桁はいくつ110/24Python30′57″D100 点
D089数字の取得1410/22Python34′36″D100 点
D088温度差の計算906/28JavaScript1′16″D100 点
D087文字をくっつける110/22Python30′40″D100 点
D086門松の作成606/17JavaScript1′23″D100 点
D084英語で何月?1706/17JavaScript5′34″D100 点
D083ブラックジャック110/22Python30′59″D100 点
D0822 つの単語510/24Python31′45″D100 点
D081家族で分ける506/17JavaScript1′37″D100 点
D080忘年会の予算306/24JavaScript1′7″D100 点
D079同じ文字210/24Python31′2″D100 点
D078入学試験610/22Python32′17″D100 点
D077計算機の表示1506/28JavaScript2′16″D100 点
D076禁止ワード2206/17JavaScript3′45″D100 点
D075足りないカード310/22Python31′25″D100 点
D074時間の表記4110/22Python30′24″D70 点
D073文字の反転110/22Python30′20″D100 点
D072データのバックアップ110/24Python30′57″D100 点
D071洗濯物と砂ぼこり1406/17JavaScript5′21″D100 点
D070残りのページ706/17JavaScript1′0″D100 点
D069割り切れない平均点510/22Python33′4″D100 点
D068雨と晴れの記録110/22Python31′3″D100 点
D067スイッチのオンオフ406/17JavaScript1′21″D100 点
D066スタミナの計算4610/24Python31′29″D60 点
D065エラーコードの分類210/22Python31′39″D100 点
D064嘘つきの日210/24Python30′45″D100 点
D062ひな祭り210/24Python32′4″D100 点
D0613 倍返し?310/24Python30′50″D100 点
D060A ボタンと B ボタン606/17JavaScript1′9″D100 点
D059トランプ占い110/22Python31′13″D100 点
D058初詣で310/22Python31′28″D100 点
D057プレゼント選び1010/22Python31′56″D100 点
D056かまくらづくり206/28JavaScript0′58″D100 点
D055ワインのキャッチコピー306/17JavaScript0′51″D100 点
D05411/11110/22Python31′6″D100 点
D053トリック・オア・トリート310/24Python31′24″D100 点
D052ピラミッドの作り方806/28JavaScript1′49″D100 点
D051衣替え110/24Python31′0″D100 点
D050お月見だんご610/22Python32′12″D100 点
D049◯◯ の秋310/22Python30′52″D100 点
D048台風の間隔606/28JavaScript2′3″D100 点
D047メダリストの表示206/28JavaScript1′12″D100 点
D046不思議なタマゴ210/24Python30′35″D100 点
D045通知票210/22Python31′26″D100 点
D044はじめまして210/24Python31′22″D100 点
D043天気の表示410/22Python31′43″D100 点
D042行列406/27JavaScript2′19″D100 点
D039正三角形かどうか1710/22Python32′15″D100 点
D040連休の天気410/24Python31′18″D100 点
D038試合の回数1206/17JavaScript1′15″D100 点
D041本棚選び1206/28JavaScript2′44″D100 点
D037花粉症でつらい910/22Python32′21″D100 点
D036アットマーク210/22Python30′44″D100 点
D035日付のデータ110/22Python30′55″D100 点
D034どれにしようかな110/24Python30′59″D100 点
D033頭文字306/17JavaScript1′25″D100 点
D032充電時間310/22Python30′34″D100 点
D031分から秒へ206/17JavaScript0′21″D100 点
D029サイコロの裏面406/17JavaScript0′35″D100 点
D028数字の桁数206/17JavaScript0′26″D100 点
D027n までの和606/28JavaScript1′49″D100 点
D026一週間の予定710/22Python32′0″D100 点
D025数字の出力710/22Python32′16″D100 点
D024三角形の内角の和806/17JavaScript1′11″D100 点
D022表面積の計算110/22Python30′30″D100 点
D023A の個数110/22Python30′33″D100 点
D021文字列の一致1010/22Python31′9″D100 点
D019文字列から N 番目110/22Python30′44″D100 点
D017最大と最小110/22Python31′2″D100 点
D016N 文字目まで出力806/25JavaScript0′52″D100 点
D015カウントダウン110/22Python30′43″D100 点
D014小文字を大文字に706/28JavaScript0′59″D100 点
D013割り算110/22Python30′43″D100 点
D012絶対値を求めよ506/17JavaScript0′34″D100 点
D011アルファベットで何番目410/22Python32′5″D100 点
D010E メールアドレス806/28JavaScript1′7″D100 点
D009西暦の計算1606/28JavaScript1′15″D100 点
D008奇数か偶数か3106/26JavaScript3′25″D100 点
D006単位の計算210/24Python31′50″D100 点
D005等差数列1306/17JavaScript4′35″D100 点
D004文字列の結合506/17JavaScript2′59″D100 点
D003掛け算のリスト306/17JavaScript2′16″D100 点
D002数の比較606/17JavaScript1′56″D100 点

未提出問題

問題タイトル
S015ABC 文字列
S007データヒストグラム
S017シートの重ね合わせ
S031ボトルネックの調整
S030山はいくつある
S019テレポート
S026ジャングルに潜むもの
S033逃さない
S029住みよい国
S011追いかけっこ
S025乱数の課題
S004積まれた文字
S020商品の運搬
S014直方体のマージ
S012ハイライト機能
S008サイコロで迷路
S006ビリヤードの球突き
S027狭い道の案内
S016水たまり
S018天気の予報
S022センサーをかいくぐれ
S003嘘つき探し
A024アイテムの分け前
A025動物の体調管理
A011うなぎを蒲焼きにしたくない
A014二角取り
A034お菓子の詰め合わせ
A021海岸線
A032Paiza 電鉄
A010クリスマスイルミネーション
A037強さ比べ
A030上司と部下
A016踏切の時刻表
A008パレードを制覇せよ
A007ともだちをたどる
A020文字をなぞれ
A033読書の課題
A027paiza 諸島の侵食
A022正方形の足し引き算
A019いかさまシャッフル
A006平面上の移動シミュレーション
A012最適な練習
A038観光地巡り
A036砂漠の旅
A029詰み防止チェック
B079相性チェック
B013最遅出社時刻
B053表の自動生成
B073イルミネーションの調査
B051汚れてしまった魔方陣
B081花壇のロープ
B025うさぎジャンプ
B033テーブルジェネレーター
B076パン屋さん
B024格子を円で切り取る
B019グレースケール画像の縮小
B061福袋詰め
B070駒の到達範囲
B060サイコロころがし
B028チャット記録
B0143D プリンタ
B011名刺バインダー管理
B062部屋掃除ロボット
B050有効なチケット
B066色のパズル
B034ロボットの歩行実験
B054不思議な足し算
B064うずを探せ
B048理想のビンゴ
B037幸運な 1 年
B083宝の地図
B036大統領選挙
B042横入りするネコ
B068チョコの分割
B032デジタル計算機
B057回転寿司
B082休暇の取り方
B023マッチ棒パズル
B040たのしい暗号解読
B009カンファレンスのタイムテーブル作成
B059占領区域
B031コインのウラとオモテ
B071ダンベルトレーニング
B065小さなライフゲーム
B072反転スイッチ
B069蟻の餌探し
B030氷のダンジョン
B010サッカーのオフサイド判定
B020ネットサーフィン
B035ジョギングランキング
B075商品の表示
B039雨上がりの道
B004ログファイルの抽出
B006ダーツゲーム
B077チケットの売り場
B056リズムゲームの分析
B029地価の予想
B052積もる粒子
B017手役の強さ
B047ホームポジション
B080みんなでスゴロク
B0157 セグメントディスプレイ
B046街の距離
B045計算ドリル
B067タスクの管理
B026自動販売機
B044爆弾ゲーム
B038つるかめ算
B063支払う枚数とお釣りの枚数
C051カード並べ
C024ミニ・コンピュータ
C019完全数とほぼ完全数
C056テストの採点
C055ログのフィルター
C067数字の調査
C034先生の宿題
C070簡易カードゲーム
C078株の売買
C074文章サイズ変更
C085壊れかけのキーボード
C077レポートの評価
C049エレベーター
C035試験の合格判定
C061繰り上がりのない足し算
C064paiza でお食事
C022ローソク足
C058模様そろえ
C048タダ飲みコーヒー
C017ハイアンドロー・カードゲーム
C028単語テストの採点
C037アニメの日時
C060辞書の作成
C036犬ぞりトーナメント
C042リーグ表の作成
C015ポイントカードの計算
C053カードの合計
C076給与の計算
C023クジの当選番号
C068秘密の手紙
C072モンスターの進化
C083売上の発表
C071直角三角形
C021暴風域にいますか?
C020残り物の量
C032お得な買い物
C046書籍購入費ランキング
C069お祭りの日付
C013嫌いな数字
C050オークションの結果
C063ガーデニング
C066金魚すくい
C010安息の地を求めて
C026ウサギと人参
C014ボールが入る箱
C057シャボン玉飛ばし
C081靴下の整理
C040背比べ
C025ファックスの用紙回収
C044手の組み合わせ
C029旅行の計画
C079カードを集める
C062回転寿司のメロン
C052ゲームの画面
C041メダルランキングの作成
C031時差を求めたい
C038お菓子の分配
C018何人前作れる?
C065数字あてゲーム
C045ページネーション
C082テストの赤点
C059パリティチェック
C006ハイスコアランキング
C054スピード違反の取り締まり
C030白にするか黒にするか
C005アドレス調査