【AtCoder】ABC297解説(Python)

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')
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次