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

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

文字列のfor文

JOI 一次予選 2020 (第 2 回) B - 文字列の反転 (7Q, 難易度 2)

reverse する系の問題 問題へのリンク 問題概要 長さ の文字列 について、 文字目から 文字目までを反転して得られる文字列を出力せよ。 制約 解法 C++ でプログラムを書くときは、通常文字列は 0 始まりですので、 からあらかじめ 1 引いておきます。 その…

JOI 一次予選 2020 (第 1 回) B - 母音を数える (8Q, 難易度 2)

for 文の練習! 問題へのリンク 問題概要 長さ の文字列 が与えられる。 のうち母音字の個数、つまり a,i,u,e,o の個数の総和を求めよ。 解法 文字列 の文字を 1 個ずつ、for 文を使って調べていきましょう。 コード #include <bits/stdc++.h> using namespace std; int</bits/stdc++.h>…

JOI 一次予選 2021 (第 3 回) B - IOI 文字列 (7Q, 難易度 2)

for 文のループカウンタ が偶数か奇数かに応じて処理を変える問題! 問題へのリンク 問題概要 長さが奇数 の文字列 が与えられる。 この文字列に対して、次の操作をすることで、"IOIOIO...OI" というように "I" と "O" を繰り返す文字列にしたい。操作回数の…

JOI 一次予選 2021 (第 1 回) B - JOI ソート (7Q, 難易度 2)

これは面白い! 問題へのリンク 問題概要 文字 J, O, I からなる、長さ の文字列 が与えられる。 の文字を並び替えて、次の条件を満たすものを求めよ。 すべての文字 J は、すべての文字 O よりも前にある すべての文字 O は、すべての文字 I よりも前にある…

JOI 一次予選 2022 (第 3 回) C - 運動会 (7Q, 難易度 3)

問題文が長めだから、丁寧に整理しよう! 問題へのリンク 問題概要 人の生徒のうち、 人は赤組で、 人は白組である。 生徒の一人である葵さんは、自分が何組かを知りたい。そこで、自分以外の 人がそれぞれ赤組であるか白組であるかを調べた。その結果は長さ…

JOI 一次予選 2022 (第 2 回) C - 次の文字 (7Q, 難易度 2)

for 文を回しながら、「次の要素」も同時に見ていくという実装! 問題へのリンク 問題概要 文字 J, O, I からなる長さ の文字列 が与えられる。 について、 の 文字目が J であるとき、 の 文字目を出力せよ。 制約 解法 for 文を回しながら、 文字目の次の…

JOI 一次予選 2022 (第 1 回) C - 複雑な文字列 (7Q, 難易度 2)

JOI は教育的な問題が多いね。 問題へのリンク 問題概要 文字 A, B, C, D, E のいずれかからなる文字列 が与えられる。 に 3 種類以上の文字列が登場するならば Yes、そうでないならば No を出力せよ。 解法 次のような 5 個の変数を用意しましょう! (変数…

JOI 一次予選 2023 (第 3 回) C - JOI エディタ (7Q, 難易度 2)

意外と難しいかもしれない。for 文を回しながら、「前の文字」を見る技術を手に入れよう! 問題へのリンク 問題概要 文字 j, o, i からなる長さ の文字列 が与えられる。 この文字列をテキストエディタに打ち込むことを考える。同じ文字が 2 個連続したとき…

JOI 一次予選 2023 (第 2 回) C - 繰り返し文字列 (7Q, 難易度 1)

for 文の練習問題! 問題へのリンク 問題概要 英小文字からなる長さ の文字列 が与えられる。 は偶数である。 が「同じ文字列を 2 回繰り返したもの」であるかどうかを判定せよ。 制約 考えたこと 文字列 を前後で半分に割ると 文字ずつになる。よって、次の…

JOI 一次予選 2023 (第 1 回) C - 3 つの箱 (7Q, 難易度 2)

問題文に言われた通りにシミュレーションする問題! 問題へのリンク 問題概要 長さ の文字列 があって、各文字は 'L' または 'R' である。 また、1 つのボールと、ボールを入れることができる箱 があって、最初ボールは箱 1 に入っている。文字列 の文字を順…

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

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

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

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

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 の個数を求めれば…

AtCoder ABC 306 A - Echo (8Q, 灰色, 100 点)

これは最近の ABC A 問題では易しめ!! 問題へのリンク 問題概要 文字列 が与えられる。この文字列の各文字を 2 回ずつ繰り返した文字列を出力せよ。 たとえば、"beginner" は "bbeeggiinnnneerr" となる。 コード for 文を用いて、文字列 の各文字 を順に…

AtCoder ABC 327 A - ab (7Q, 灰色, 100 点)

文字列の練習! 問題へのリンク 問題概要 英小文字からなる長さ の文字列 が与えられる。 この文字列 中に、文字 'a' と 'b' が隣接する箇所があるかどうかを判定せよ。 考えたこと for 文を用いて判定していく。添字 i を回していき、 S[i] == 'a' and S[i+…

AtCoder ABC 322 A - First ABC 2 (7Q, 灰色, 100 点)

「連続文字列」を処理する典型問題。 問題へのリンク 問題概要 文字 A, B, C のみからなる長さ の文字列 が与えられる。 文字列 に含まれる連続部分文字列 "ABC" のうち、それが始まる最小の添字を答えよ。"ABC" を含まない場合は -1 を出力せよ。 解法 (1)…

JOI 予選 2007 C - シーザー暗号 (AOJ 0512) (7Q, 難易度 2)

アルファベットを戻す処理を書くのが最初は難しいかもしれない 問題へのリンク editorial 問題概要 シーザー暗号とは、文字列に対して、各文字を 3 つずつ進めたものに変換するものである。ただし、X, Y, Z はそれぞれ A, B, C となる。具体的には、次のよう…

JOIG 2021 B - 巻物 (AOJ 0702) (7Q, 難易度 2)

文字列の処理を練習する問題ですね 問題へのリンク 問題概要 文字の文字列 が与えられます。 は英文字のみからなります。 の 文字目以降について、 大文字ならば小文字に 小文字ならば大文字に なるように変換してくだだい。 制約 考えたこと この問題では、…