目次
はじめに
こんにちは。てくますプロジェクトのYukkinです! この記事では、ABC381のA問題を解説していきます。
ABC(AtCoder Beginner Contest)とは、AtCoderが開催している、競技プログラミングコンテストです。
ABC381 A – 11/22 String
問題
文字列 \(T\) が以下の条件を全て満たすとき、\(T\) を 11/22 文字列 と呼びます。
- \(T\) の文字数は奇数である
- 文字列の中央の文字は “/” であり、中央より左側の文字はすべて “1”、右側の文字はすべて “2” である
“1”, “2”, “/” からなる長さ \(N\) の文字列 \(S\) が与えられます。\(S\) が 11/22 文字列であるか判定してください。
制約
- \(1 \leqq N \leqq 100\)
思考の筋道
問題文の条件通りに素直に実装することで解くことができます。
\(N\) が偶数のときは “No” を出力します。
\(N\) が奇数のときは、各文字が以下の条件に反していないか、一文字ずつ調べていきましょう。
- 中央より左側の文字の場合:”1″
- 中央の文字の場合:”/”
- 中央より右側の文字の場合:”2″
1文字でも条件に反していれば、その時点で “No” を出力します。
最後まで “No” にならなければ、”Yes” を出力しましょう。
コード
N = int(input())
S = input()
if N % 2 == 0:
print("No")
exit()
for i in range(N):
if (
(0 <= i < (N - 1) // 2 and S[i] != "1")
or (i == (N - 1) // 2 and S[i] != "/")
or ((N - 1) // 2 < i <= N - 1 and S[i] != "2")
):
print("No")
exit()
print("Yes")
以上、ABC381のA問題の解説でした!
では、またね。
コメントを書く