テービーテックのデータサイエンス

未経験リケジョがゼロからデータサイエンティストを目指す姿を記す奮闘記です。2019/12/05文系出身者が共同で更新を開始

TAG index

AtCoder-練習問題を解きまくる2

f:id:tbtech:20210715110019p:plain
今回もAtCoderの練習問題をバシバシ解いていきますよー0(`・ω・´)=〇シュッ

ABC042B - 文字列大好きいろはちゃんイージー

f:id:tbtech:20210715092228p:plain

N,L, *words = open(0).read().split()
words.sort()
print(''.join(words))

文字列の数をNに、文字列の長さをLに、各文字列をwordsにリストで格納します。
sortでwords内の文字列を辞書順に並び変えます。
そしてリスト内の文字列を結合して出力します。

ABC043B - バイナリハックイージー

f:id:tbtech:20210715092131p:plain

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 - いっしょ

f:id:tbtech:20210715092041p:plain

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人でカードゲームイージー

f:id:tbtech:20210715091959p:plain

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 イージー

f:id:tbtech:20210715091717p:plain

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)が面積になります。

つづく٩(ˊᗜˋ*)و