AtCoder Beginner Contest 322
https://atcoder.jp/contests/abc322
A問題
A,B,C全てを比較するのではなく、S[i:i+3] == "ABC"
とすればよかったです。
N = int(input())
S = input()
pos = -2
for i in range(N-2):
if S[i] == 'A' and S[i+1] == 'B' and S[i+2] == "C":
pos = i
break
print(pos+1)
B問題
starswithとendswithを思いつきました。
ただ、出力周りが汚くなってしまいまいた。
N, M = map(int, input().split())
S = input()
T = input()
a1 = T.startswith(S)
a2 = T.endswith(S)
if a1 and a2:
print(0)
elif a1 and not a2:
print(1)
elif not a1 and a2:
print(2)
elif not a1 and not a2:
print(3)
C問題
これでいいのか?と思いながら提出したらACでした。
日付を0-indexedにして、現在の日と差を取るだけでした。
N, M = map(int, input().split())
A = [x - 1 for x in map(int, input().split())]
# print(A)
pos = 0
for i in range(N):
print(A[pos] - i)
if i == A[pos]:
pos += 1
振り返り
Keep
C問題まで15分で解けたのがよかったです。
コンテスト中にランキングを見る癖をつけていたので、C問題とD,E問題の崖に気づくことができました。
Problem
D問題をマス目の濃淡で解決しようとしたが、コマの反転現象を解決できず間に合いませんでした。
ちなみに書いたコードはこれです。
P = []
for i in range(3):
dark = 0
light = 0
for i in range(4):
p = input()
for j in range(4):
if p[j] == "#":
if (i + j) % 2 == 0:
dark += 1
else:
light += 1
P.append((dark, light))
flag = False
for msk in range(1 << 3):
sum = 0
for i in range(3):
if msk & 1 << i:
sum += P[i][0]
else:
sum += P[i][1]
if sum == 8:
flag = True
if flag:
print("Yes")
else:
print("No")
Try
途中かE問題の正答数が伸びていたので、そちらに切り替えてもよかったかもしれません。
ただ、結果を見ると動的計画法を使う問題だったので解けたか分かりませんが・・・