けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

文字列

AtCoder ABC 307 D - Mismatched Parentheses (3Q, 茶色, 400 点)

カッコ列に関連してシミュレーションしていく問題! 問題へのリンク 問題概要 英小文字と文字 '('、')' からなる長さ の文字列 が与えられる。この文字列に対して、次の操作を繰り返す。 「文字 '(' と ')' に挟まれた部分文字列であって、カッコ文字を含ま…

AtCoder ABC 307 B - racecar (6Q, 灰色, 200 点)

ザ・6Q という感じの問題! 問題へのリンク 問題概要 個の文字列 が与えられる。 これらの文字列から 2 個選んで連結して得られる文字列が回文になることがあり得るかどうかを判定せよ。 解法 この問題は 2 つのパートで成り立っている。 個の文字列から つ…

AtCoder ABC 357 C - Sierpinski carpet (4Q, 灰色, 250 点)

いろんな方法で実装できそう! 問題へのリンク 問題概要 非負整数 に対して、レベル のカーペットを再帰的に定義する。 レベル のカーペットは、"#" からなる 1 × 1 のグリッドである に対して、レベル のカーペットは のグリッドであり、 このグリッドを の…

AtCoder ABC 357 B - Uppercase and Lowercase (7Q, 灰色, 200 点)

文字列の大文字・小文字変換もできるようにしていきたい。 問題へのリンク 問題概要 英大文字または英小文字からなる文字列 が与えられる。 大文字の個数が小文字の個数よりも多い場合は、すべて大文字に変換し、そうでない場合はすべて小文字に変換して出力…

AtCoder ABC 052 B - Increment Decrement (7Q, 灰色, 200 点)

文字列の動きをシミュレーションしながら最大値も更新していく! 問題へのリンク 問題概要 整数 を持っていて、最初は 0 である。 長さ の文字列 に従って、これを使って [tex] N] 回の操作を行った。 回目の操作では、文字 が 'I' ならば を 1 増やし、'D' …

AtCoder ABC 049 B - たてなが (7Q, 灰色, 200 点)

二次元グリッドの基本問題 問題へのリンク 問題概要 のグリッドが与えられる。各マスの文字は '.' か '*' である。 このグリッドを縦方向に 2 倍に引き伸ばして出力せよ。 解法 個の文字列の入力を受け取り、各行ごとに 2 回ずつ出力していけば OK。 #includ…

AtCoder ABC 351 B - Spot the Difference (7Q, 灰色, 200 点)

二次元配列を二重 for 文で調べる最低ライン! 問題へのリンク 問題概要 のグリッドにアルファベット文字が書かれたものが 2 つ () 与えられます。 これらは 1 箇所のみ異なっていることが保証されます。 であるような を答えてください。 制約 解法 (C++) …

AtCoder ABC 354 B - AtCoder Janken 2 (6Q, 灰色, 200 点)

文字列を辞書順にソートする方法を確認しておこう! 問題へのリンク 問題概要 人のユーザーがいて、 人目の名前は 、レーティングは である。 レーティングの総和を で割った余りを としたとき、各ユーザーの名前のうち、辞書順で小さい順に 番目のものを求…

AtCoder ABC 354 G - Select Strings (4D, 橙色, 625 点)

Dilworth の定理から、DAG の最小パス被覆!! かつて流行った高度典型。 問題へのリンク 問題概要 個の文字列 が与えられる。各文字列には重み がついている。 これらの文字列から「どの 2 つの文字列も互いに他を部分文字列として含まない」という条件を満…

JOI 一次予選 2024 (第 2 回) C - 画数数え (8Q, 難易度 2)

for 文の練習! 問題へのリンク editorial 問題概要 文字 j は 2 画、o は 1 画、i は 2 画である。 与えられた文字列 が合計で何画であるかを求めよ。 解法 for 文を用いよう。for 文のループカウンタ変数を i として、文字 S[i] について、次のように処理…

JOI 一次予選 2024 (第 1 回) C - ハミング距離 (8Q, 難易度 2)

for 文の練習をしよう! 問題へのリンク editorial 問題概要 長さ の文字列 が与えられる。これらの文字列のハミング距離を求めよ。 ハミング距離とは、 となる の個数のことを指す。 解法 for 文の出番です。S[i] != T[i] であるような i の個数を求めれば…

yukicoder No.254 文字列の構成 (2Q)

yukicoder で「構築」練習することにした! 問題へのリンク 問題概要 英小文字からなる文字列 であって、次の条件を満たすものを求めよ。 文字数は 以下である どの隣接する文字も相異なる の連続する部分文字列であって、回文であるものがちょうど 個存在す…

AtCoder ABC 350 A - Past ABCs (7Q, 灰色, 100 点)

構文解析の初歩ですね。C++ なら、scanf() 関数を使うと楽ですね。 問題へのリンク 問題概要 "ABC197" のような長さ 6 の文字列 が与えられる。 何回目の ABC であるかを判定し、それが 316 回を除く、1〜349 回のいずれかであるかどうかを判定せよ。 解法 C…

AtCoder ABC 226 A - Round decimals (7Q, 灰色, 100 点)

色んな方法がありそう! 問題へのリンク 問題概要 0 以上 100 未満の小数第三位までで表すことのできる実数 が、小数第三位まで入力されます。 を小数第一位で四捨五入した結果として得られる整数を出力してください。 考えたこと C++ で解く場合、入力は ci…

AtCoder ABC 225 A - Distinct Strings (7Q, 灰色, 100 点)

これ結構難しいと思う! 数学 IA の「場合の数」をやると、よく出て来るやつですね。 問題へのリンク 問題概要 英小文字のみからなる長さ 3 の文字列 が与えられます。 の各文字を並び替えて得られる文字列は、何種類ありますか? 解法 「3 個のものを並び替…

AtCoder ABC 224 A - Tires (8Q, 灰色, 100 点)

文字列を上手に使う練習 問題へのリンク 問題概要 末尾が "er" か "ist" であるような文字列 (2 文字以上) が与えられます。 どちらであるかを判定してください。 解法 末尾が "er" であるかどうかを判定することにしよう。文字列 S の長さを N とするとき、…

AtCoder ABC 218 A - Weather Forecast (灰色, 100 点)

まさに「文字列の index アクセス」を練習できる問題! 問題へのリンク 問題概要 7 文字の文字列 が与えられる。この文字列は 'o' と 'x' のみからなる。 この文字列の 番目の文字が 'o' であるならば "Yes"、そうでなければ "No" と答えよ。 解法 多くのプ…

AtCoder ABC 217 A - Lexicographic Order (灰色, 100 点)

辞書順という言葉は聞きなれないかもしれないが、ここでマスターしよう! 問題へのリンク 問題概要 文字列 が与えられる。 が よりも辞書順で小さいならば "Yes" を出力し、そうでなければ "No" を出力せよ。 解法 辞書順とは、その名の通り「辞書に出てくる…

AtCoder ABC 216 A - Signed Difficulty (灰色, 100 点)

これは C++ よりも C で書いた方が楽かもしれない! 問題へのリンク 問題概要 "15.3" のような形式で、小数点第一位まで示された小数が与えられる。 小数第一位の値が 0 以上 2 以下ならば、整数部分に "-" をつけて(たとえば "15-") 小数第一位の値が 3 以…

AtCoder ABC 215 A - Your First Judge (灰色, 100 点)

if 文と、文字列の練習 問題へのリンク 問題概要 文字列 が与えられる。 が文字列 "Hello,World!" と完全に一致するならば "AC" と出力し、そうでなければ "WA" と出力せよ。 解法 文字列 が ""Hello,World!" と完全に一致するかどうかは if (S == "Hello,Wo…

ABS PracticeA - Welcome to AtCoder

ABS の筆頭に登場する問題。整数型変数と文字列型変数の入力を受け取って、出力する練習をする問題。 問題へのリンク 問題概要 整数 と、文字列 が次の形式で標準入力で与えられます。 a b c s の計算結果と、文字列 を一行に並べて表示せよ。 解法 言語によ…

AtCoder ABC 197 A - Rotate (灰色, 100 点)

文字列の練習 問題へのリンク 問題概要 長さ 3 の文字列 が与えられる。 の先頭の文字を末尾に移動してできる文字列を答えよ。 解法 文字 S[1]、S[2]、S[0] をこの順に出力すれば OK。 #include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; cou</bits/stdc++.h>…

AtCoder ABC 189 A - Slot (灰色, 100 点)

文字列問題! 問題へのリンク 問題概要 長さ 3 の文字列が与えられる。これが 1 種類の文字のみから成るかどうかを判定せよ。 解法 文字列 S の 3 文字は S[0], S[1], S[2] と表せる。これらが全て等しいということは S[0] == S[1] S[1] == S[2] がともに満…

AtCoder ABC 187 A - Large Digits (灰色, 100 点)

文字列として処理した方が楽。 問題へのリンク 問題概要 3 桁の正の整数 が与えられる。これらの整数の桁和の最大値を求めよ。 制約 整数 はそれぞれ文字列として受け取った方が楽だと思われる。そうすると、 たとえば、3 桁の整数を表す文字列 A について …

AtCoder ABC 179 A - Plural Form (灰色, 100 点)

if 文の練習! 問題へのリンク 問題概要 文字列 が与えられる。 の末尾の文字が 's' のときは に "es" をつけて出力し、それ以外のときは に "s" をつけて出力せよ。 解法 の末尾の文字は S.back() で取得できる (C++)。その値によって、処理を分岐すればよ…

AtCoder ABC 175 A - Rainy Season (灰色, 100 点)

ちょっと難しい問題。 問題へのリンク 問題概要 3 文字の 'R' と 'S' のみからなる文字列 が与えられる。 において、'R' が最大で何個連続しているかを答えよ。 解法 ありうる文字列は 通りあることに注意しよう。よって、すべての文字列を調べることができ…

AtCoder ABC 171 A - αlphabet (灰色, 100 点)

大文字小文字の判定問題。 問題へのリンク 問題概要 文字 が与えられる。これが大文字ならば "A" を、小文字ならば "a" を出力せよ。 解法 一般に、文字 c が大文字であるかどうかは C++ ならば、 isupper(c) によって判定できる。 #include <bits/stdc++.h> using namespac</bits/stdc++.h>…

AtCoder ABC 167 A - Registration (灰色, 100 点)

一見 for 文が必要だが、なしでも解ける 問題へのリンク 問題概要 2 つの文字列 が与えられる。 は より 1 文字多い。 が の末尾に 1 文字追加することで出来上がるものであるかどうかを判定せよ。 解法 の末尾の文字を削除しよう。C++ なら、 T.pop_back();…

AtCoder ABC 166 A - A?C (灰色, 100 点)

if 文の練習問題。 問題へのリンク 問題概要 文字列 が与えられる。 が "ABC" ならば "ARC" を、"ARC" ならば "ABC" を出力せよ。 解法 if 文で処理を分岐しよう。 #include <bits/stdc++.h> using namespace std; int main() { string S; cin >> S; if (S == "ABC") cout <</bits/stdc++.h>…

AtCoder ABC 162 A - Lucky 7 (灰色, 100 点)

これは文字列で入力を受け取って処理した方が楽! 問題へのリンク 問題概要 3 桁の整数 が与えられる。 の桁の値に 7 が含まれるかどうかを判定せよ。 解法 を整数として処理することもできるが、文字列として受け取った方が楽。 文字列ならば、N[0] と N[1]…