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

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

易しい文字列の問題

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

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

AtCoder ABC 224 A - Tires (灰色, 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 (灰色, 100 点)

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

AtCoder ABC 111 A - AtCoder Beginner Contest 999 (灰色, 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 年の日付に変換せよ。…

AtCoder ABC 081 A - Placing Marbles (灰色, 100 点)

ABS にも採用した問題! 問題へのリンク 問題概要 長さが 3 の文字列 が与えられる。この文字列の文字は '0' か '1' である。 '1' が何文字あるかを答えよ。 解法 3 文字それぞれについて、'1' かどうかを調べれば OK。 #include <bits/stdc++.h> using namespace std; int </bits/stdc++.h>…

AtCoder ABC 070 A - Palindromic Number (灰色, 100 点)

を文字列として受け取るのが楽だと思う! 問題へのリンク 問題概要 3 桁の整数 が与えられる。 が回文数であるかどうかを判定せよ。 解法 を整数ではなく、文字列として受け取ろう。そうすれば 「先頭の文字と末尾の文字が等しいかどうか」 を判定すれば OK…

AtCoder ABC 060 A - Shiritori (灰色, 100 点)

3 つの文字列がしりとりになっているかを判定する問題 問題へのリンク 問題概要 3 つの文字列 が与えられる。 これらが「しりとり」になっているかどうかを判定せよ。 解法 文字列 A の末尾の文字は A.back() で取得できる。 A.back() == B[0] かつ B.back()…