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

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

for文:条件を満たす添字やその個数を求める

AtCoder ABC 382 A - Daily Cookie (7Q, 灰色, 100 点)

問題文がややこしい書き方をしているけど、「要するにこういうこと!」という言い換えができるといい。 問題へのリンク 問題概要 文字 ., @ からなる長さ の文字列 が与えられる。@ を左から順に 個だけ . に書き換える。 書き換えたあとの文字列に含まれる…

AtCoder ABC 380 A - 123233 (7Q, 灰色, 100 点)

ソートが使えるなら、それが楽だと思う 問題へのリンク 問題概要 6 桁の正の整数 が与えられる。 が次の条件を満たすかどうかを判定せよ。 1 をちょうど 1 個含む 2 をちょうど 2 個含む 3 をちょうど 3 個含む 解法 (1):1, 2, 3 の個数を数える方法 for 文…

AtCoder ABC 375 A - Seats (7Q, 灰色, 100 点)

文字列を for 文で調べる系の問題 問題へのリンク 問題概要 文字 #, . からなる長さ の文字列 が与えられる。次の条件を満たす整数 の個数を求めよ。 = # = . = # 考えたこと 次のように考えると実装しやすい。 各 に対して、文字列 の 文字目から 3 文字文…

AtCoder ABC 142 B - Roller Coaster (8Q, 灰色, 200 点)

for 文の練習問題! 問題へのリンク 問題概要 個の整数 のうち、 以上であるものの個数を求めよ。 考えたこと for 文を用いて、 に対して、 以上であるかどうかを判定していこう。 以上:答えを表す変数を 1 増やす そうでない:何もしない というようにすれ…

AtCoder ABC 275 A - Find Takahashi (7Q, 灰色, 100 点)

最大値を求めるとともに、その index も求めるという問題! 問題へのリンク 問題概要 高さが であるような 本の橋がある。これらの橋の高さは相異なる。 これらの橋のうち、最も高いものが何番目の橋であるかを答えよ。 考えたこと まず、単に「橋の高さの最…

AtCoder ABC 276 A - Rightmost (7Q, 灰色, 100 点)

for 文の練習! 問題へのリンク 問題概要 英小文字からなる文字列 が与えられる。 に含まれる文字 'a' のうち、最も右側にあるものについて、その添字を答えよ。ただし、'a' が含まれない場合は -1 を出力せよ。 考えたこと 「最も右側」という条件がなけれ…

AtCoder ABC 287 A - Majority (7Q, 灰色, 100 点)

文字列を 個受け取る型式に慣れよう! 問題へのリンク 問題概要 は奇数である。 個の文字列 が与えられる。各文字列は "For" か "Againist" かのいずれかである。 "For" が過半数を占めるかどうかを判定せよ。 制約 は 1 以上 99 以下の奇数 考えたこと 個の…

AtCoder ABC 291 A - camel Case (8Q, 灰色, 100 点)

線形探索法の応用! 問題へのリンク 問題概要 英文字からなる文字列 が与えられる。 この文字列 には、1 個だけ英大文字があり、残りはすべて英小文字である。 この英大文字が先頭から何番目の文字であるかを求めよ。 考えたこと for 文を用いて、各 に対し…

AtCoder ABC 301 A - Overall Winner (7Q, 灰色, 100 点)

for 文の練習! 問題へのリンク 問題概要 高橋くんと青木くんが 回の試合を行った。 これらの試合の結果を表す長さ が与えられる。 回目の試合の勝者は、 の 文字目が T ならば高橋くん、A ならば青木くんである。 高橋くんと青木くんのうち、勝った試合の数…

JOI 予選 2008 B - JOIとIOI (AOJ 0522) (7Q, 難易度 2)

近年の ABC A 問題ではよくある「文字列の部分文字列を調べる」系の問題 問題へのリンク 問題概要 文字列 が与えられる。この文字列に含まれる "JOI" の個数と、"IOI" の個数をそれぞれ求めよ。 制約 考えたこと この問題よりも易しいバージョンとして、「文…

AtCoder ABC 300 A - N-choice question (8Q, 灰色, 100 点)

for 文の練習! 問題へのリンク 問題概要 整数 が与えられるので、 の値を答えてください。 ただし、この問題は 択問題であり、 番の選択肢は ] です。正解となる 選択肢の番号 を出力してください。 考えたこと for 文を用いて、 に対して、次のように考え…

AtCoder ABC 304 A - First Player (7Q, 灰色, 100 点)

「最小値となる添字を求める」というのは、呼吸するように書けるようになりたいところ! 問題へのリンク 問題概要 円周上に時計回りに人 が並んでいる。人 の名前は 、年齢は である(全員の年齢は相異なる)。 年齢が最小である人から開始して時計回りに 人…

AtCoder ABC 344 A - Spoiler (7Q, 灰色, 100 点)

いろんな方法がある! ここでは、文字 '|' のある 2 つの添字を特定するという方法で挑むことにする。 問題へのリンク 問題概要 英小文字と | のみからなる文字列 が与えられる。 は | をちょうど 2 個含むことが保証される。 2 つの | の間にある文字および…

AtCoder ABC 339 A - TLD (7Q, 灰色, 100 点)

for 文のいい練習問題! 問題へのリンク 問題概要 英小文字と文字 . のみからなる文字列 が与えられる。 を文字 . で分割したときの末尾の文字列を出力してください。 制約 には文字 . が 1 つ以上含まれる 考えたこと まずは、 に含まれる文字 . のうち、最…

AtCoder ABC 280 A - Pawn on a Grid (7Q, 灰色, 100 点)

二次元配列を見ていく問題 問題へのリンク 問題概要 次のような のグリッドが与えられる。各マスの文字は '.' や '#' である。 文字が '#' であるようなマスの個数を求めよ。 制約 考えたこと 今回のような入力は「長さ の文字列を 個格納した vector<string> 型の配</string>…

AtCoder ABC 277 A - ^{-1} (8Q, 灰色, 100 点)

線形探索法の基本問題! 問題へのリンク 問題概要 を並び替えてできる順列 が与えられる。 整数 が与えられるので、 を満たす を求めよ。 考えたこと まず順列 は、サイズ の vector<int> 型の変数 P として受け取ろう(C++)。このとき、 はそれぞれ P[0], P[1],</int>…

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 (第 2 回) C - 分割 (7Q, 難易度 2)

for 文の練習! 問題へのリンク 問題概要 長さ の数列 (すべての要素は互いに相異なる) について、最大値を考えたとき、その左側の総和と、右側の総和をそれぞれ求めよ。 制約 解法 この問題では、数列 の最大値だけではな、 が最大となるような も求める必…

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

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

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

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

AtCoder ABC 359 B - Couples (6Q, 灰色, 150 点)

条件を上手に言い換えて、探索しやすい感じにしよう! 問題へのリンク 問題概要 をちょうど 2 個ずつ含む数列 が与えられる。 次の条件を満たす の個数を求めよ。 「数列中の、値が であるような 2 つの要素は、ちょうど 1 個の他の要素を挟む」 制約 考えた…

AtCoder ABC 359 A - Count Takahashi (7Q, 灰色, 100 点)

基本的な for 文の問題 問題へのリンク 問題概要 個の文字列が与えられる。各文字列は "Takahashi" か "Aoki" のいずれかである。 "Takahashi" が何個あるかを数えよ。 解法 個の文字列を順に受け取って、"Takahashi" と一致するものを数えれば良い。 #inclu…

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

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

AtCoder ABC 357 A - Sanitize Hands (7Q, 灰色, 100 点)

意外とミスりやすいかもしれない。慎重に for 文を書こう。 問題へのリンク 問題概要 個の正の整数 と、正の整数 が与えられる。 に対して、 を順に引いていく。このとき、 が負にならずに引ける最大個数を求めよ。 解法 実際に順番に から引いていって、 で…

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

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

AtCoder ABC 170 A - Five Variables (8Q, 灰色, 100 点)

これ結構難しいと思うけど、Difficulty 8 なのすごい! 問題へのリンク 問題概要 整数 が与えられる。このうち 1 つだけ 0 がある。 であるような を答えよ。 解法 if 文で 1 個ずつ見ていってもいいが、for 文でまとめて扱った方が楽だと思う。 #include <bits/stdc++.h> u</bits/stdc++.h>…

AtCoder ABC 330 A - Counting Passes (8Q, 灰色, 100 点)

最近、易しめのいい感じの A 問題多いね! 問題へのリンク 問題概要 個の整数 のうち、 以上であるものの個数を求めよ。 解法 配列を使って入力を受け取って、for 文を使って配列の要素を 1 個 1 個見ていけばいい。 #include <bits/stdc++.h> using namespace std; int mai</bits/stdc++.h>…

AtCoder ABC 294 A - Filter (8Q, 灰色, 100 点)

これは易しめの A 問題! 問題へのリンク 問題概要 長さ の数列 が与えられる。 これらの数値の中から偶数のみを抽出せよ。 考えたこと for 文を回していって、偶数のみ出力すればよい。 #include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; vect</bits/stdc++.h>…

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

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