今回もAtCoderの練習問題をバシバシ解いていきますよー0(`・ω・´)=〇シュッ
ABC042B - 文字列大好きいろはちゃんイージー
N,L, *words = open(0).read().split() words.sort() print(''.join(words))
文字列の数をNに、文字列の長さをLに、各文字列をwordsにリストで格納します。
sortでwords内の文字列を辞書順に並び変えます。
そしてリスト内の文字列を結合して出力します。
ABC043B - バイナリハックイージー
x = list(input()) y=[] for i in range(len(x)): if x[i] != 'B': y.append(x[i]) elif len(y)>=1: del y[-1] print(''.join(y))
押されたキーをリストでxに格納します。空のリストyを準備します。
iには0からxの長さ分の数が入るようforを回します。
xを順に確認し、もしxがB以外(0か1)なら、そのままyに追加します。
もしxがBであり、yの長さが1以上なら、yの最後の数を削除します。
forが修了したらyの最終値を結合して出力します。
ABC043C - いっしょ
N = int(input()) a = list(map(int, input().split())) mean = round(sum(a)/N) cost = 0 for i in range(N): cost += (a[i] - mean)**2 print(cost)
Nに整数の個数を、aに整数をリストで格納します。
aの合計値を個数で割り平均値を、それをroundで丸めてmeanとします。
aの各数値をmeanへ変換する時のコストを求めます。
costという0の変数を準備します。N個分forを回し、
各数値(a[i])とmeanとの差の2乗がコストなので、costへ加算していきます。
forが修了したらcostの最終値を出力します。
ABC045B - 3人でカードゲームイージー
S = {i:[*input()]for i in'abc'} i = 'a' while S[i] : i = S[i].pop(0) print(i.upper())
a,b,cさんのそれぞれのカードの文字を辞書型でSに以下ように入れます。
{'a': ['a', 'c', 'a'], 'b': ['a', 'c', 'c', 'c'], 'c': ['c', 'a']}
aさんからスタートなのでiにaと入れておきます。
while S[i]で誰かのカードが無くなるまで回すようにします。
i=S[i].pop(0)でターンが回ってきた人の最初の文字を削除し、
さらにその削除した文字をiへ入れます。
whileが修了したらiに入っている文字を大文字で出力します。
ABC047B - すぬけ君の塗り絵 2 イージー
W,H,N=map(int,input().split()) b,l=0,0 w,h=W,H for i in range(N): X,Y,A=map(int,input().split()) if A==1:b=max(b,X) elif A==2: w=min(w,X) elif A==3: l=max(l,Y) else: h=min(h,Y) if b>=w or l>=h: print(0) else: print((w-b)*(h-l))
初めに白く塗られている長方形(W,H)を入力します。
黒く塗られていき、白い長方形の頂点が変化していくので
それを随時記録しておくために、横の左端をb、右端をw
たての下端をl、上端をhとしておきます。
そして、Aの各値に対してb,w,l,hを更新していきます。
色塗りが修了したら、全て塗りつぶされた場合を考えます。
左端bが右端wと同じ以上か、下端lが上端hと同じ以上なら白の面積は0です。
そうでない場合は(w-b)×(h-l)が面積になります。
つづく٩(ˊᗜˋ*)و