【AtCoder】ABC395解説(Python)

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

目次

ABC395 A – Strictly Increasing?

問題

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

問題の要約

長さ \(N\) の整数列 \( A = \left( A_1, A_2, \dots, A_N \right) \) が与えられる。\(A\) が狭義単調増加であるか判定せよ。 \(A\) が狭義単調増加であるとは、\(1 \leq i \lt N\) なる整数 \(i\) に対して \( A_i \lt A_{i+1}\) が成り立つことを指す。

解説1

for文を用いて、各 \(i\) に対して \( A_i \lt A_{i+1}\) が成り立つことを判定する。

解説

入力を受け取ります。

# 入力
N=int(input())
A=list(map(int,input().split()))

各 \(i\) に対して、 \( A_i \lt A_{i+1}\) を満たさない、すなわち、 \( A_i \ge A_{i+1}\) となるとき、 No を出力し、終了します。ループが終了し、条件を満たしているときは Yes を出力します。

# 各 i について、A_i < A_{i+1} を満たさないとき、
# すなわち、A_i >= A_{i+1} となるとき、'No' を出力して終了
for i in range(N-1):
  if A[i]>=A[i+1]:
    print('No')
    exit()

# 全ての i で条件を満たしている場合、'Yes' を出力
print("Yes")

解答

# 入力
N=int(input())
A=list(map(int,input().split()))

# 各 i について、A_i < A_{i+1} を満たさないとき、
# すなわち、A_i >= A_{i+1} となるとき、'No' を出力して終了
for i in range(N-1):
  if A[i]>=A[i+1]:
    print('No')
    exit()

# 全ての i で条件を満たしている場合、'Yes' を出力
print("Yes")

解説2

狭義単調増加であることと、各 \(A_i\) はすべて異なり、ソートしたものと一致することは同条件であることを用います。

各 \(A_i\) がすべて異なることは、len(set(A))==Nで判定できます。また、ソートしたものと一致することはsortedを使用してソートし比較すれば判定できます。

解説

入力を受け取ります。

# 入力
N=int(input())
A=list(map(int,input().split()))

\(A\) をソートしたものを\(B\) とします。

# AをソートしたものをBとする
B=sorted(A)

各 \(A_i\) はすべて異なり、ソートしたものと一致するか判定します。

# 各 A_i はすべて異なり、sortしたものと一致するか判定
if len(set(A))==N and A==B:
  print('Yes')
else:
  print('No')

解答

# 入力
N=int(input())
A=list(map(int,input().split()))

# AをソートしたものをBとする
B=sorted(A)

# 各 A_i はすべて異なり、sortしたものと一致するか判定
if len(set(A))==N and A==B:
  print('Yes')
else:
  print('No')
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次