見出し画像

atcoder問題集②

atcoderで問題を解いて勉強したので記録として残しておきます。
是非、勉強の参考にしてください。

問題①


問題1


出力例

解答コード

N = int(input())
num_list = []
for i in range(N):
    n = int(input())
    num_list.append(n)
for j in range(1len(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}')

問題②

問題


出力例

解答コード

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

問題③


問題3


出力例

解答コード

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) # [[23], [14], [39], [68], [110]]
# 累積和
sum_a = [0]
s = 0
for b in a:
    s += b
    sum_a.append(s)
print(sum_a) # [08142324262737137113711137]
for l,r in lr:
    ans = sum_a[r] - sum_a[l-1] # listのインデックスの要素を計算
    print(ans)

以上になります。


この記事が気に入ったらサポートをしてみませんか?