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')