ABC381 A問題の解説(Python)

はじめに

こんにちは。てくますプロジェクトの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問題の解説でした!

では、またね。

リンク