![見出し画像](https://assets.st-note.com/production/uploads/images/90272872/rectangle_large_type_2_5b6c199db232751d58df20087dde65b7.png?width=1200)
atcoder問題集②
atcoderで問題を解いて勉強したので記録として残しておきます。
是非、勉強の参考にしてください。
問題①
![](https://assets.st-note.com/img/1667308039802-PUNz7BjzO0.png?width=1200)
![](https://assets.st-note.com/img/1667308060596-5cQmlN9r3M.png?width=1200)
解答コード
N = int(input())
num_list = []
for i in range(N):
n = int(input())
num_list.append(n)
for j in range(1, len(num_list)):
ans = num_list[j - 1] - num_list[j]
if ans == 0:
print(f'stay')
elif ans < 0:
print(f'up {abs(ans)}')
else:
print(f'down {ans}')
問題②
![](https://assets.st-note.com/img/1667308689747-gsQkfkXYHa.png)
![](https://assets.st-note.com/img/1667308750270-noDo6atU7q.png)
解答コード
num_list = list(map(int, input().split()))
a = max(num_list) # 1番大きい要素をセット
num_list.remove(a) # リストから削除
b = max(num_list) # 2番目
num_list.remove(b) # リストから削除
print(max(num_list))
問題③
![](https://assets.st-note.com/img/1667569229183-LqXXfQ00k2.png?width=1200)
![](https://assets.st-note.com/img/1667569322181-5qTxJQtZ9t.png?width=1200)
解答コード
n, m = map(int, input().split())
num_lst = list(map(int, input().split()))
ans_lst = [] # 答えのリスト
for i in range(m):
n_1, m_1 = map(int, input().split())
data = num_lst[n_1-1 : m_1] # リストを範囲指定で取り出す
ans_lst.append(sum(data)) # その範囲の合計を計算
for ans in ans_lst:
print(ans) # リストの中身を改行で表示する。
別解
n,q = map(int,input().split())
a = list(map(int,input().split()))
lr = [list(map(int,input().split())) for _ in range(q)] # 5個の配列でデータをセット
print(lr) # [[2, 3], [1, 4], [3, 9], [6, 8], [1, 10]]
# 累積和
sum_a = [0]
s = 0
for b in a:
s += b
sum_a.append(s)
print(sum_a) # [0, 8, 14, 23, 24, 26, 27, 37, 137, 1137, 11137]
for l,r in lr:
ans = sum_a[r] - sum_a[l-1] # listのインデックスの要素を計算
print(ans)
以上になります。
この記事が気に入ったらサポートをしてみませんか?