【AtCoder】ABC322解説(Python)

AtCoder Beginner Contest 322の解説記事です。

目次

ABC322 A – First ABC 2

問題

問題文の要約は以下の通りです。

問題の要約

ABC からなる長さ \(N\) の文字列 \(S\) 与えられるので、ABCが連続な部分文字列として初めて現れるのは何文字目か答えよ。

制約

・\(3 \le N \le 100\)
・\(S\) は ABC からなる長さ \(N\) の文字列

入力

\(N\)
\(S\)

出力

\(S\) の中で ABC が部分文字列として初めて現れる位置を出力せよ.。ただし、ABC が \(S\) に現れない場合は -1 を出力せよ。

解説

ABCが \(S\) に含まれているかどうかで場合分けを行い、ABCが \(S\) に含まれているときはfind関数で位置を特定します。

解説

まず入力 \(N\) をint型、\(S\) を文字列として受け取ります。

# 入力
N=int(input())
S=input()

ABCがSに含まれていないときは-1を出力、ABCがSに含まれているときはABC が初めて現れる位置を出力します。0から始まることに注意すると+1が必要になります。

# ABCがSに含まれていないとき
if 'ABC' not in S:
  print(-1)
# ABCがSに含まれているとき
else:
  print(S.find('ABC')+1)

解答

# 入力
N=int(input())
S=input()

# ABCがSに含まれていないとき
if 'ABC' not in S:
  print(-1)
# ABCがSに含まれているとき
else:
  print(S.find('ABC')+1)

ABC322 B – Prefix and Suffix

問題

解説

\(S\) が \(T\) の接頭辞である判定はT.startswith(S)、\(S\) が \(T\) の接尾辞である判定はT.endswith(S)で行うことができるのでこれを使用します。

解説

まず入力を受け取ります。

# 入力
N,M=map(int,input().split())
S=input()
T=input()

接頭辞であり、かつ接尾辞でもある場合は0
接頭辞であるが、接尾辞でない場合は1
接尾辞であるが、接頭辞でない場合は2
接頭辞でも接尾辞でもない場合は3を出力します。

# 接頭辞であり、かつ接尾辞でもある場合
if T.startswith(S) and T.endswith(S):
  print(0)
# 接頭辞であるが、接尾辞でない場合
elif T.startswith(S):
  print(1)
# 接尾辞であるが、接頭辞でない場合
elif T.endswith(S):
  print(2)
# 接頭辞でも接尾辞でもない場合
else:
  print(3)

解説

# 入力
N,M=map(int,input().split())
S=input()
T=input()

# 接頭辞であり、かつ接尾辞でもある場合
if T.startswith(S) and T.endswith(S):
  print(0)
# 接頭辞であるが、接尾辞でない場合
elif T.startswith(S):
  print(1)
# 接尾辞であるが、接頭辞でない場合
elif T.endswith(S):
  print(2)
# 接頭辞でも接尾辞でもない場合
else:
  print(3)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次