AtCoder Beginner Contest 297の解説記事です。
目次
ABC297 A – Double Click
問題
問題文の要約は以下の通りです。
問題の要約
\(N\) 個の整数 \(T_{1}, T_{2}, \cdots, T_{N}\) を与えたとき、\(T_{i+1} – T_{i}\) が \(D\) 以下となる \(T_{i+1}\) を求めよ。
入力
\(N\) \(D\)
\(T_{1}\) \(T_{2}\) \(\cdots\) \(T_{N}\)
出力
\(T_{i+1} – T_{i}\) が \(D\)以下となる \(T_{i+1}\) が存在すれば \(T_{i+1}\) を出力、存在しなければ -1
を出力せよ。
解説
for文ですべての \(T\) に対して条件を満たすかどうか確認すればよいです。
存在しなければ -1
を出力する必要があります。
また、処理を終了させるためにはexit()
を使用します。
N, D = map(int, input().split())
T = list(map(int, input().split()))
#Tの添え字は0からN-1までであることに注意
for i in range(N-1):
if T[i+1]-T[i]<=D:
print(T[i+1])
exit()
print('-1')
ABC297 B – chess960
問題
解説
それぞれの文字の位置をfor
文で判定する。
解説
まず入力を文字列で受け取ります。
# 入力
S = input()
2つのB
の位置検索してi
,j
として、i
,j
の偶奇が異なるかどうかを判定します。
# 2つのBの位置を検索してi,jとする
for i in range(8):
if S[i]=='B':
for j in range(i+1,8,1):
if S[j]=='B':
# i,jの偶奇が同じであればNoを出力
if (i+j)%2==0:
print('No')
exit()
R,K,Rの順番に並んでいるか判定します。
# R,K,Rの順番に並んでいるか判定
for i in range(8):
if S[i]=='R':
for j in range(i+1,8,1):
if S[j]=='K':
for k in range(j+1,8,1):
if S[k]=='R':
print('Yes')
exit()
print('No')
解答
# 入力
S = input()
# 2つのBの位置を検索してi,jとする
for i in range(8):
if S[i]=='B':
for j in range(i+1,8,1):
if S[j]=='B':
# i,jの偶奇が同じであればNoを出力
if (i+j)%2==0:
print('No')
exit()
# R,K,Rの順番に並んでいるか判定
for i in range(8):
if S[i]=='R':
for j in range(i+1,8,1):
if S[j]=='K':
for k in range(j+1,8,1):
if S[k]=='R':
print('Yes')
exit()
print('No')