解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!
754
https://atcoder.jp/contests/abc114/tasks/abc114_bs = input()
ans = 753
for i in range(len(s)-2):
temp = abs(int(s[i]+s[i+1]+s[i+2])-753)
if ans > temp:
ans = temp
print(ans)
連続する3桁の整数をつながりとして抜き出して、753(753にできる限り近い数字を求めたいから)で引いた時の絶対値を最初に求めます。 次にその時点で最小の差と比べて、抜き出した値の方が753との差が小さいかった場合抜き出した値と753の差がansに入っていきます。
Christmas Eve Eve
https://atcoder.jp/contests/abc115/tasks/abc115_bn = int(input())
products = [int(input()) for _ in range(n)]
total = sum(products)
total -= (max(products)//2)
print(total)
最初にすべての商品の定価の合計を求め出して、その後に一番高い商品の定価を2で割った数を先に求め出した合計から引くだけで求められます!
Collatz Problem
https://atcoder.jp/contests/abc116/tasks/abc116_bs = int(input())
numbers = []
numbers.append(s)
judge = True
cnt = 1
while judge:
cnt += 1
if s % 2 == 0:
s = s//2
if s in numbers:
print(cnt)
exit()
numbers.append(s)
else:
s = s*3+1
if s in numbers:
print(cnt)
exit()
numbers.append(s)
s%2==0で数字が奇数か偶数かを判定してから、それぞれに合った処理を実行します。その後にnumbersリストに既に存在している数字かを判定します。もし存在するのなら、その時のiの値を出力し、存在しないのならばnumbersリストに追加して次の数字の処理へと移ります。
Polygon
https://atcoder.jp/contests/abc117/tasks/abc117_bn = int(input())
edges = list(map(int, input().split()))
max_edge = max(edges)
edges.remove(max_edge)
if max_edge < sum(edges):
print("Yes")
else:
print("No")
問題文で定義に則って実装しました。まず、与えられた辺の中で最大のものをmax_edgeに格納して、edgesからmax_edgeを取り除きます。その後にsumメソッドでmax_edgeを抜いた後の辺の長さの合計とmax_edgeの値を比べて、結果を出力します。
Foods Loved by Everyone
https://atcoder.jp/contests/abc118/tasks/abc118_bimport collections
import itertools
n,m = map(int, input().split())
numbers = itertools.chain(*[list(map(int, input().split()))[1:] for _ in range(n)])
answers = collections.Counter(numbers)
total = 0
for i in answers.values():
if i == n:
total += 1
print(total)
なんか無性にライブラリを使いまくりたくなったのでcollectionsのcounterとitertoolsのchainメソッドを使って書きました。まずcounterメソッドでそれぞれの食べ物が好きだと言われた回数を調べるために二重リスト?を一重リスト?に変換する必要がありました。そのためにitertoolsのchainメソッドを使いました。そしてcounterメソッドで回数を調べ上げた後に。counterのvaluesをfor文で回してnと同じ回数だったらtotalに1を足していくようにさせました。
Digital Gifts
https://atcoder.jp/contests/abc119/tasks/abc119_bn = int(input())
moneys = [list(input().split()) for _ in range(n)]
total = 0
for money in moneys:
if money[1] == "JPY":
total += int(money[0])
else:
total += (float(money[0]) * 380000.0)
print(total)
ビットコインのお年玉の場合、数値が小数になるのでfloat型に変換にして処理をしていきます!
K-th Common Divisor
https://atcoder.jp/contests/abc120/tasks/abc120_ba,b,k = map(int, input().split())
anslist = []
for i in range(1,min(a,b)+1):
if a % i == 0:
if b % i == 0:
anslist.append(i)
anslist = anslist[::-1]
print(anslist[k-1])
aとbをどっちも割り切れる数は絶対にaかbの小さい方以下でないといけないので、1から小さい方の数の範囲でfor文を回します。そして約数を洗い出していきます。最後に大きい順にリストをソートしてk番目に大きい数字を取り出します。
Can you solve this?
https://atcoder.jp/contests/abc121/tasks/abc121_bn,m,c = map(int, input().split())
blist = list(map(int, input().split()))
alist = [list(map(int, input().split())) for _ in range(n)]
total = 0
for i in range(n):
temp = 0
for j in range(m):
temp += blist[j]*alist[i][j]
if temp + c > 0:
total += 1
print(total)
全探索をルールに従って脳死でぶん回すだけです...
ATCoder
https://atcoder.jp/contests/abc122/tasks/abc122_bS = input()
acgt = ['A','C','G','T']
ans = 0
cnt = 0
for s in S:
if s in acgt:
cnt += 1
else:
ans = max(ans, cnt)
cnt = 0
print(max(ans, cnt))
Sの中の文字を一文字づつ取り出していきましていきます、sがACGTのどれかであったらcntの数を1増やして、もしそうでない場合はansにcntか既存のansの値の大きい方を入れます、そしてcntの値を0にリセットします。最後のprintにもmax(ans, cnt)を入れている理由は最後の文字がACGTのどれかであったときにcntの数をansの値と比較するためです。例えばSの値がACGTのときに、この工程を忘れてしまうとansの値が0で出力されてしまいます。
Five Dishes
https://atcoder.jp/contests/abc123/tasks/abc123_bcooks = [[int(input())] for _ in range(5)]
total = 0
for i in range(5):
temp = 10 - cooks[i][0] % 10
if temp == 10:
temp = 0
cooks[i].insert(0,temp)
for i, cook in enumerate(sorted(cooks)):
if cook[0] == 0 or i == (len(cooks)-1):
total += cook[1]
else:
total += sum(cook)
print(total)
調理にかかる時間を一度すべて追加して、その料理が届いたあとから注文できるまでの時間を10-cooks[i][0] % 10で求め出して、リストに追加していきます。そして待ち時間が少ない順でsortして、その順番通りに注文していった結果かかる時間を出力します
Great Ocean View
https://atcoder.jp/contests/abc124/tasks/abc124_bn = int(input())
hotels = list(map(int, input().split()))
total = 0
highest = 0
for hotel in hotels:
if hotel >= highest:
total += 1
highest = hotel
print(total)
hotelの標高がその時点で一番標高の高いホテルより以上の位置にあるのなら、totalに1を足します。そして一番高いホテルの標高をそのホテルの標高に入れ替えます。
Resale
https://atcoder.jp/contests/abc125/tasks/abc125_bn = int(input())
values = list(map(int, input().split()))
costs = list(map(int, input().split()))
results = []
for i in range(n):
result = values[i]-costs[i]
if result >= 0:
results.append(result)
print(sum(results))
valueとcostの差を計算して、利益が出る時だけresultsリストに挿入します、そしてresultsの合計数値を出力します