解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!
Guidebook
https://atcoder.jp/contests/abc128/tasks/abc128_bn = int(input())
restaurants = [list(input().split()) for _ in range(n)]
ans = []
for i in range(n):
ans.append([i+1,restaurants[i][0],int(restaurants[i][1])])
ans = sorted(ans, key=lambda x:x[2],reverse=True)
ans = sorted(ans, key=lambda x:x[1])
for ans_line in ans:
print(ans_line[0])
最初にそれぞれのレストランの番号をインデックス番号+1でそれぞれのリストに加えておきます。次に評価が高い順に表示をしていきたいのでlambda式を使って、それぞれのレストランの評価でsortをします。最後にレストランの名前を辞書順でsortして、for文を回して出力します。
Balance
https://atcoder.jp/contests/abc129/tasks/abc129_bn = int(input())
weights = list(map(int, input().split()))
ans = 10000000000000000
for i in range(1,n):
lw = []
hw = []
for idx, weight in enumerate(weights):
if idx > i:
hw.append(weight)
else:
lw.append(weight)
temp = abs(sum(hw)-sum(lw))
ans = min(ans,temp)
print(ans)
tの値は1<=t<nなので、全く同じ範囲でfor文を回します。enumerateでインデックス番号と重りの値を取得し、インデックス番号でどっちのリストに入るか判定して、appendで挿入していきます。最後に大きい方から小さい方を引いた値を絶対値で取得し、既存のansの値より小さいかを判定していきます。
Bounding
https://atcoder.jp/contests/abc130/tasks/abc130_bn,x = map(int, input().split())
Llist = list(map(int, input().split()))
d = 0
dlist = [0]
anslist = []
for i in range(n):
d += Llist[i]
dlist.append(d)
for dpoint in dlist:
if dpoint <= x:
anslist.append(dpoint)
print(len(anslist))
0では絶対に跳ね返るのでdlistにあらかじめ0を入れておきます、その後に跳ね返るポイントを問題文に従って挿入していき、最後にx以下のポイントは何個あるかをfor文で判定してその個数を出力するだけです。
Bite Eating
https://atcoder.jp/contests/abc131/tasks/abc131_bn,l = map(int, input().split())
tastes = []
for i in range(1,n+1):
taste = l + i - 1
tastes.append(taste)
if max(tastes) < 0:
print(sum(tastes)-max(tastes))
else:
min_apple = max(min(tastes),0)
print(sum(tastes)-min_apple)
まず全てのリンゴの味をリストに格納して、リンゴの味の最大値が負の数の場合は数を抜く前のパイの味からリンゴの味の最大値を引いて出力します。もしリンゴの味の最大値が正の数の場合は0以上で一番味の値が小さいリンゴの値をmin_appleに格納して数を抜く前のパイの味からmin_appleの値を引いて出力します。
Ordinary Number
https://atcoder.jp/contests/abc132/tasks/abc132_bn = int(input())
numbers = list(map(int,input().split()))
total = 0
for i in range(n-2):
temp_numbers = [numbers[i],numbers[i+1],numbers[i+2]]
num = sorted(temp_numbers)[-2]
if temp_numbers.index(num) == 1:
total += 1
print(total)
全探索で考えられる3つの数字の組み合わせを全て洗い出して、2番目に小さい値が真ん中にある数字と一致するか判定し、一致するならtotalに1を足していくだけ。
Good Distance
https://atcoder.jp/contests/abc133/tasks/abc133_bn,d = map(int, input().split())
points = [list(map(int, input().split())) for _ in range(n)]
total = 0
for i in range(n):
for j in range(i+1,n):
temp = 0
for k in range(d):
temp += ((points[i][k]-points[j][k])**2)
if (temp**0.5).is_integer():
total += 1
print(total)
考えられる点同士の繋がりを全探索してから距離を与えられた公式に沿って求め出して、整数かを判定していくだけです。
Golden Apple
https://atcoder.jp/contests/abc134/tasks/abc134_bimport math
n,d = map(int, input().split())
range = 2*d+1
print(math.ceil(n/range))
一人の監視官が見張れる範囲は2*d+1なのでrangeに格納します、そしてmathライブラリのceilメソッドという切り上げの割り算ができるメソッドを使って、木の本数割るrangeの切り上げを出力します。
0 or 1 Swap
https://atcoder.jp/contests/abc135/tasks/abc135_bn = int(input())
numbers = list(map(int, input().split()))
if numbers == sorted(numbers):
print("YES")
exit()
for i in range(n):
for j in range(i+1,n):
damy = numbers[::]
damy[i], damy[j] = damy[j], damy[i]
if damy == sorted(numbers):
print("YES")
exit()
print("NO")
考えられる全てのパターンを全探索していきます、damyを作らないと一回以上の交換をするのと同じことになってしまうので一回for文が回るごとにdamyを作って値をリセットしていく必要があります。