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

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

易しい文字列の問題

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

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

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

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

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 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 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 160 A - Coffee (灰色, 100 点)

文字列の index アクセスと、論理演算子「&&」の理解を問う問題。 問題へのリンク 問題概要 長さ 6 の文字列が "coffee" 的であるとは、 3 文字目と 4 文字目が等しい 5 文字目と 6 文字目が等しい という条件をともに満たすことを言います。 与えられた長さ…

AtCoder ABC 158 A - Station and Bus (灰色, 100 点)

ABC-A のスキルではないけど、ソートしてしまうのが楽。 問題へのリンク 問題概要 長さ 3 の文字列 が与えられる。 に含まれる文字は 'A' か 'B' のいずれかである。 この文字列が 'A' と 'B' をともに含むかどうかを判定せよ。 解法 をソートするのが楽だと…

AtCoder ABC 154 A - Remaining Balls (灰色, 100 点)

if 文と文字列の練習 問題へのリンク 問題概要 文字列 の書かれたボールが 個、文字列 の書かれたボールが 個ある。 今、文字列 の書かれたボールを 1 個食べた。 文字列 と書かれたボールが何個ずつ残っているかを答えよ。 制約 または 解法 U == S ならば …

AtCoder ABC 151 A - Next Alphabet (灰色, 100 点)

アルファベット文字の扱い方に関する問題。 問題へのリンク 問題概要 z 以外のアルファベット小文字 が与えられる。 の次の文字を答えよ。 ('g' ならば、答えは 'h') 解法 C++ ならば、文字 を char 型で受け取って、それをインクリメントして出力すれば OK…

AtCoder ABC 149 A - Strings (灰色, 100 点)

文字列型が定義されている言語なら簡単! 問題へのリンク 問題概要 2 つの文字列 が与えられる。 の順に連結して得られる文字列を出力せよ。 解法 問題文に書いてある通りに、文字列を連結して答えてもよいが、それよりは単純に をこの順に出力する方が楽。 …

AtCoder ABC 141 A - Weather Prediction (灰色, 100 点)

周期変化の問題 問題へのリンク 問題概要 高橋君の住む街では、天気が "Sunny", "Cloudy", "Rainy" をこの順に周期的に繰り返す。 ある日の天気を表す文字列 が与えられるので、その次の日の天気を表す文字列を出力せよ。 解法 if 文を用いて丁寧に実装しよ…

AtCoder ABC 132 A - Fifty-Fifty (灰色, 100 点)

これはだいぶ難しい問題ですね! 問題へのリンク 問題概要 4 文字の文字列 が与えられる。 がちょうど 2 種類の文字からなり、それらの文字がちょうど 2 個ずつあるかどうかを判定せよ。 解法 色んな解法があると思われる。ここでは、 をアルファベット順に…

AtCodewr ABC 126 A - Changing a Character (灰色, 100 点)

大文字小文字の扱いを考える。 問題へのリンク 問題概要 文字 'A'、'B'、'C' のみからなる長さ の文字列 が与えられる。 この文字列の 文字目を小文字にした文字列を出力せよ。 解法 文字目は S[K-1] と表せる。 文字 S[K-1] が 'A', 'B', 'C' のいずれかで…

AtCoder ABC 119 A - Still TBD (7Q, 灰色, 100 点)

これは戸惑った人も多いと思う。実は単純に考えて OK! 問題へのリンク 問題概要 日付データが yyyy/mm/dd 形式の文字列で与えられる (ex:"2019/04/30")。 与えられた日付が、2019 年 4 月 30 日以前であるかどうかを判定せよ。 解法 文字列を string 型で…

AtCoder ABC 111 A - AtCoder Beginner Contest 999 (8Q, 灰色, 100 点)

文字列として処理する方が楽であろう。 問題へのリンク 問題概要 3 桁の整数 が与えられる。 の各桁の値について、1 は 9 に変換し、9 は 1 に変換したものを出力せよ。 解法 整数ではなく、文字列として処理する方が楽だと思われる。各文字について、 '1' …

AtCoder ABC 335 A - 202<s>3</s> (灰色, 100 点)

ここのところ、結構易しめの A 問題が続いているね! 問題へのリンク 問題概要 "hello2023" のように、"2023" で終わる文字列 が与えられる。 末尾の文字を '4' に変更して出力せよ。 解法 C++ では、文字列 の末尾の文字は S.back() でアクセスできる。 #in…

AtCoder ABC 090 A - Diagonal String (灰色, 100 点)

文字列の扱いに慣れよう! 問題へのリンク 問題概要 の形に並べられた文字盤が与えられる。この文字盤の対角線上の文字を並べて得られる 3 文字の文字列を答えよ。 解法 入力を 3 つの文字列としてうけとり、それぞれの 0 文字目、1 文字目、2 文字目を答え…

AtCoder ABC 085 A - Already 2018 (灰色, 100 点)

実務をやっていると汎用性など考えたくなるけど、これは入力が限定されているので、「特定の文字を変える」だけで OK! 問題へのリンク 問題概要 2017 年の日付が "2017/01/19" などと与えられる。 これを "2018/01/19" のように、2018 年の日付に変換せよ。…