ABC編です。
- ABC1
- ABC3
- ABC4
- ABC5
- ABC6
- ABC7
- ABC8
- ABC9
- ABC10
- ABC11
- ABC12
- ABC13
- ABC14
- ABC15
- ABC16
- ABC17
- ABC19
- ABC20
- ABC21
- ABC22
- ARC23
- ABC24
- ABC25
- ABC26
- ABC27
- ABC28
- ABC29
- ABC30
- ABC31
- ABC32
- ABC33
- ABC34
- ABC35
- ABC36
- ABC37
- ABC38
- ABC39
- ABC40
- ABC41
- ABC42
- ABC43
- ABC44
- ABC45
- ABC46
- ABC47
- ABC48
- ABC50
- ABC51
- ABC52
- ABC53
- ABC54
- ABC55
- ABC56
- ABC58
- ABC59
- ABC63
- ABC65
- ABC69
- ABC70
- ABC72
- ABC73
- ABC74
- ABC75
- ABC76
- ABC77
- ABC78
- ABC79
- ABC82
- ABC84
- ABC85
- ABC86
- ABC87
- ABC91
- ABC92
- ABC94
- ABC96
- ABC97
- ABC100
- ABC103
- ABC104
- ABC105
- ABC106
- ABC110
- ABC116
- ABC119
- ABC123
- ABC130
- ABC131
- ABC133
- ABC134
- ABC138
- ABC140
- ABC145
- ABC146
- ABC149
- ABC155
- ABC157
ABC1
A - 積雪深差
差なので、値の引き算をする
ABC3
A - AtCoder社の給料
1からnまでの合計がわかれば良いので、公式どおり足しあげる
ABC4
A - 流行
2倍なので、掛け算を使う
ABC5
A - おいしいたこ焼きの作り方
足りない部分は作れないので、整数除算を使う
B - おいしいたこ焼きの食べ方
一番0に近い数字なので、最小値を取る
ABC6
A - 世界のFizzBuzz
条件が和集合なので、orで和をとる
B - トリボナッチ数列
漸化式をコードに落としたいので、前の結果をメモしながら値を大きくしていく
ABC7
A - 植木算
要素数に対して要素間の個数は1少ないので、引く
B - 辞書式順序
小さい文字を1つ出力すれば良いので、'a'のケースだけ考える。
ABC8
A - アルバム
離散値なので、右端-(左端-1)の-1をつける
ABC9
A - 引越し作業
あまりがあってはいけないので、+1を先にしておく
B - 心配性な富豪、ファミリーレストランに行く。
要素ごとの個数は無視したいので、集合を使って要素を整理する
ABC10
A - ハンドルネーム
末尾に文字列を足すので、文字列の足し算をする
B - 花占い
値によって加算する量が異なるので、条件にあるまでループを回しデクリメントを続ける
ABC11
A - 来月は何月?
12の時だけ動作が違うので、条件分岐を使う
B - 名前の確認
先頭だけ大文字なので、capitalizeをする
ABC12
A - スワップ
数字を同時に複数個入力するので、splitでスペースの分割を行う
B - 入浴時間
単位の大きい方から決まるので、602、60で順に割って時間分秒の順に求める
ABC13
A - A
文字列の順番が知りたいので、ordを使う
B - 錠
どちらにしても増やすのと減らすの2通りなので、両方試す
ABC14
A - けんしょう先生のお菓子配り
あまりがない時だけ別処理なので、条件分岐を使う
ABC15
A - 高橋くんの研修
長さが知りたいので、lenを使う
B - 高橋くんの集計
分母にゼロを含められないので、ゼロのカウントをとり個数からひく
ABC16
A - 12月6日
割り切れるかどうかが知りたいので、あまりが0になるかをチェックする
B - A±B Problem
+-それぞれの整合性チェックが必要なので、条件分岐をネストさせる
ABC17
A - プロコン
同じ処理を何度も行いたいので、繰り返しを使う
ABC19
A - 高橋くんと年齢
要素ごとに扱うと比較が何度も走るので、リストとして扱ってソートする
ABC20
A - クイズ
入力によって処理が変わるので、条件分岐を使う
B - 足し算
連結は文字列としての操作なので、先に文字列として連結した後に整数にもどす
ABC21
A - 足し算
同じ数を何回でも使えるので、1をn回使う
B - 嘘つきの高橋くん
同じところを2回通ったかが知りたいので、配列と集合の差をとる
ABC22
A - Best Body
体重が変化するので、毎回体重を更新して判定をする
ARC23
A - 加算王
桁ごとの和を取りたいので、文字列として扱ってそれぞれ足す
ABC24
A - 動物園
K人を超えているかが論点なので、合計人数で条件分岐させる
B - 自動ドア
毎回ドアの開く時間はリセットされるので、要素ごとに次までの時間との比較をする
ABC25
B - 双子とスイカ割り
方角の情報を持ちたいので、東西をプラスマイナスと対応させる
ABC26
A - 掛け算の最大値
面積が最大になる組み合わせを出力したいので、正方形を考える
ABC27
A - 長方形
1つしかないものを選択したいので、リストとして受け取って要素のカウントをする
ABC28
A - テスト評価
分岐が3つ以上になるので、elifを活用する
B - 文字数カウント
文字列の長さが高々100なので、すべての文字をカウントする
ABC29
A - 複数形
末尾に文字を足したいので、文字列の足し算をする
B - カキ
個別に含まれているかのチェックをしたいので、ループを回す
ABC30
A - 勝率計算
小数は誤差が怖いので、積の形に直して判定をする
ABC31
A - ゲーム
条件が分かれるので、条件分岐を使用する
B - 運動管理
条件が複数になるので、elifを活用する
ABC32
A - 高橋君と青木君の好きな数
どちらでも割り切れる数なので、最小公倍数を最小単位として考える
ABC33
A - 暗証番号
論点が種類数なので、各桁を集合にして扱う
C - 数式の書き換え
足し算ごとに区切って判定をしたいので、+でsplitをかける
ABC34
A - テスト
大小関係が知りたいので、比較を行う
B - ペア
前にいるか後ろにいるかが知りたいので、偶奇の判定をする
ABC35
A - テレビ
比のままだと判定しにくいので、掛け算の形に式変形する
ABC36
A - お茶
足りない状態ではいけないので、切り上げをする
ABC37
A - 饅頭
種類は問わずとにかく量を増やしたいので、価格の安いものを貪欲にとる
ABC38
A - お茶
文字数によらず最後の1文字が知りたいので、添字に-1を使う
B - ディスプレイ
2つの配列の共通要素があるかが知りたいので、積集合を利用する
ABC39
A - 高橋直体
同じ面積が2面あるので、それぞれ求めて2倍する
B - エージェント高橋君
4乗してその数になる数が知りたいので、1/4乗をする
ABC40
A - 赤赤赤赤青
前か後ろ2つの選択肢があるので、どちらも計算してminをとる
ABC41
B - 直方体
あまりを出したいので、%を活用する
ABC42
A - 和風いろはちゃんイージー 順番は関係なく個数のみが論点なので、必要な要素をカウントする
B - 文字列大好きいろはちゃんイージー
あえりえる組み合わせが多いので、最も小さいものを固定できないかを考える
ABC43
A - キャンディーとN人の子供イージー
総和なので、整数の総和の公式を書く
B - バイナリハックイージー
末尾に対して操作をするので、スタック的なデータの持ち方、操作をする
ABC44
A - 高橋君とホテルイージー
nがk以上かどうかが論点なので、そこで条件分岐をとる
B - 美しい文字列
全てに当てはまるかが論点なので、1つでも奇数であればfalse扱いにする
ABC45
A - 台形
台形の面積に必要な情報が揃っているので、公式に当てはめて記述する
ABC46
A - AtCoDeerくんとペンキ
種類数だけが知りたいので、集合型を使う
B - AtCoDeerくんとボール色塗り
隣の色によって選べる色が決まるので、最初に端を1つ決めることであとの選択肢は決まると考える
ABC47
A - キャンディーと2人の子供
一番大きいものが他と等しいかということなので、ソートを使って計算する
B - すぬけ君の塗り絵 2 イージー
4パターンあることがややこしさを招くので、上下左右の4つに分けて変数を管理する
ABC48
B - Between a and b ...
a~bの区間だと考えにくいので、~bと~a-1の区間の差を考える
ABC50
A - Addition and Subtraction Easy
文字列の並びを数式として処理したいので、evalで計算する
ABC51
A - Haiku
文字列に対して同じ操作を何度もするので、一度に置換できるメソッドを使用する
ABC52
A - Two Rectangles
大きい方を使うので、maxを使用する
B - Increment Decrement
計算の累積が最大になる点が知りたいので、累積和をとっておいて最大値を取る
ABC53
A - ABC/ARC
大小関係が知りたいので、比較を行う
ABC54
A - One Card Poker
1の時だけは強いので、例外として条件に入れる
ABC55
B - Training Camp
値がすぐ大きくなるのでmodは取れる時に取る
ABC56
A - HonestOrDishonest
答えが2値あるので、片方になる場合だけを考えて残りはそれ以外とする
ABC58
A - ι⊥l
条件が分かれているので、条件分岐を行う
B - ∵∴∵
奇数偶数で長さが異なる可能性があるので、奇数側にダミーの空文字を入れて整える
ABC59
B - Comparison
条件が3つに分岐するので、elifを使う
ABC63
A - Restricted
条件が2つに分岐しているので、条件分岐を使う
ABC65
A - Expired?
条件が3つに分岐するので、elifを活用する
ABC69
A - K-City
線の間の数が知りたいので、本数-1をする
B - i18n
文字列を分解して受け取る必要があるので、アンパックを使用する
ABC70
A - Palindromic Number
数字を桁ごとに処理したいので、文字列として扱う
ABC72
A - Sandglass2
正になる時のみ処理を行うので、max(0,) を使用する
ABC73
B - Theater
席は離散値なので、右端-(左端-1)の-1をつける
ABC74
A - Bichrome Cells
同じ数同士をかけるので、累乗の処理を使う
ABC75
A - One out of Three
選択肢が3つなので、それぞれ同じ値があるかをチェックする
ABC76
A - Rating Goal
問題文の逆の操作が必要なので、求めたいものを変数と見て式を整える
ABC77
B - Around Square
制約の桁数が大きいので、ルートをとって全探索をする
ABC78
A - HEX
文字列の大小関係が知りたいので、数字と同じように比較をする
B - ISU
端と人の個数がずれているとまとめて考えにくいので、先に端1つ分取り除く
ABC79
A - Good Integer
数字を桁ごとに処理したいので、文字列として扱う
ABC82
A - Round Up the Mean
切り上げが必要なので、ceilを使う
B - Two Anagrams
可能かどうかを判定したいので、操作できる最大ケースのソートをする
ABC84
A - New Year
後どれだけかなので、引き算をする
ABC85
B - Kagami Mochi
同じサイズのものは2つ複数使えないので、要素の種類数を求める
C - Otoshidama
O(n3)から1つ次元を落としたいので、変数2つを固定すると残り1つは自明になることを使う
ABC86
B - 1 21
直接的に平方数か判定しにくいので、可能性を全探索する
ABC87
A - Buying Sweets
bの塊を引けるだけ引きたいので、bで割った余りを対応させる
ABC91
B - Two Colors Card Game
種類ごとの要素数の差が知りたいことなので、得する可能性のある種類を全探索する
ABC92
A - Traveling Budget
電車とバスは別の問題なので、個別に独立して処理をする
ABC94
A - Cats and Dogs
具体的な値はわからないので、範囲の最小と最大を考える
ABC96
A - Day of Takahashi
確認した月が含まれるかが論点なので、日が月より小さいか否かで条件分岐させる
ABC97
A - Colorful Transceivers
条件が2パターンあるので、論理和をとる
B - Exponential
値が極端に大きくなることで遅くなるので、探索中に条件を超えたらループを切る
ABC100
A - Happy Birthday!
連続してはいけないので、差が1以下になる状況を考える
ABC103
A - Task Scheduling Problem
途中で折り返して無駄な距離歩きたくないので、ソートして一直線に並べる
ABC104
A - Rated for Me
条件が複数あるので、制約が厳しく先に捕捉される方から分岐させる
ABC105
A - AtCoder Crackers
あまりが出るかどうかが知りたいので、あまりが0かで条件分岐をする
ABC106
A - Garden
縦と横の長さがわかる状態にしたいので、使わない部分を端に寄せる
ABC110
A - Maximize the Formula
大きい桁の値が和への寄与が大きいので、最も大きな位に大きな数を入れる
ABC116
A - Right Triangle
整数で出力する必要があるので、制約から//で除算を行う
ABC119
A - Still TBD
月が4月以前かが知りたいので、スライスで抜き出す
ABC123
B - Five Dishes
整数の繰り上がりを表現したいので、10で割ったあまりで分類して作る
ABC130
A - Rounding
大小関係が論点なので、比較を行う
C - Rectangle Cutting
長方形の面積を半分にしたいので、重心を通るケースを考える
ABC131
A - Security
数字を桁ごとに処理したいので、文字列として扱う
ABC133
C - Remainder Minimization 2019
全探索は難しいので、明らかにmodの結果がゼロになる長さでループを切る
ABC134
A - Dodecagon
同じ数同士を掛けたいので、累乗を使う
B - Golden Apple
できるだけ広く監視させたいので、被りがないように長さを割る
ABC138
B - Resistors in Parallel
式が一瞬ややこしく感じるので、分母部分の処理と分数全体を分けて考える
C - Alchemist
後から処理する数字の影響力が大きいので、小さい順に処理をする
ABC140
A - Password
桁ごとに独立に選ぶので、重複順列を使う
ABC145
A - Circle
何倍かの部分が知りたいだけなので、何倍かを変数において式を立てる
ABC146
B - ROT N
文字列を辞書順で動かしたいので、辞書順の基準になるA~Zまでの文字列を用意する。
ABC149
A - Strings
2つの文字を同時に複数個入力するので、splitで分割する
B - Greedy Takahashi
マイナスにはできないので、できるだけ引いたら0で止める
ABC155
B - Papers, Please
全ての要素が条件を満たすかが知りたいので、条件分岐にallを使用する
ABC157
A - Duplex Printing
足りない状態ではいけないので、切り上げを行う