トップページ -> AOJの解答例 -> ITP2_3の解答例

ITP2_3の解答例(Python)

指定された区間に関する操作についてです. 指定された区間をスライスで切り出して処理をしています.

1. ITP2_3_A: Min-Max

最小値と最大値を出力します.

# ITP2_3_A
N = list(map(int,input().split(" ")))
print(f"{min(N)} {max(N)}")

2. ITP2_3_B: Min-Max Element

指定された区間から最大値,最小値を見つけて出力します. スライスで区間を切り出してからmin,maxを使います.

# ITP2_3_B
n = input()
N = list(map(int,input().split(" ")))

m = int(input())

for _ in range(m):
    query = list(map(int,input().split(" ")))
    # 最小値の報告
    if query[0] == 0:
        print(min(N[query[1]:query[2]]))
    else:
        print(max(N[query[1]:query[2]]))

3. ITP2_3_C: Priority Queue

指定された数字が区間中に何個含まれるかをカウントする問題です. 指定された区間をスライスで切り出して,countでカウントします.

# ITP2_3_C
n = input()
N = list(map(int,input().split(" ")))

m = int(input())

for _ in range(m):
    query = list(map(int,input().split(" ")))
    # count を使う
    print(N[query[0]:query[1]].count(query[2]))

4. ITP2_3_D: Lexicographical Comparison

辞書順でどちらが大きいのかを判定する問題です. どちらも存在するところまでは単純に比較をし,最後まで決着がつかなかった場合は長さを比較します.

# ITP2_3_D
n = input()
A = input()

m = int(input())
B = input()

# 両方の文字が存在するところまでは単純な比較でよい
min_length= min(len(A),len(B))
if A[:min_length] > B[:min_length]:
    print(0)
elif A[:min_length] < B[:min_length]:
    print(1)
# 最後まで決着がつかなかった場合は長さの比較
else:
    print(int(len(A)<len(B)))

<- 前へ戻る 【目次に戻る】 次へ進む ->