0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bootcampのeasy100をやった記録 1-10

Last updated at Posted at 2020-08-16

AtCoderProblemsのTrainingをPython3でやる Easy編
↑これの1-10のやつです。

1.ABC139-B Power Socket

A個口のタップをx個使った時の未使用の差込口はx*(A-1)+1個なので、それがBを超えるまでxに+1しようと考えました。
whileの条件式とにらめっこしてると、なんで(a-1)/(b-1)を使った良い感じの奴1にしなかったのかという気持ちになりました。

a,b=map(int,input().split())
x=0
while x*(a-1)+1<b:
    x+=1
print(x)

2.ABC156-C Rally

リスト内包表記を使うと短くかけてオシャレですね。
pは0から100の各座標で開いたときの消費する体力の総和を全列挙して、そこから最小値を出せば良いよねと考えました。

n=int(input())
x=[int(i)for i in input().split()]
p=[sum([(j-i)**2 for j in x]) for i in range(101)]
print(min(p))

3.CODE FESTIVAL 2016 qua-B Qualification simulator

問題文に書いてあることをそのまま愚直に全列挙しました。
解説もそんなものでしたね。

n,a,b=map(int,input().split())
s=input()
passed=0
rank_b=1
for i in range(n):
    if s[i]=="a":
        if passed<a+b:
            print("Yes")
            passed+=1
        else:
            print("No")
    elif s[i]=="b":
        if passed<a+b and rank_b<=b:
            print("Yes")
            rank_b+=1
            passed+=1
        else:
            print("No")
    else:
        print("No")

4.三井住友信託銀行プログラミングコンテスト2019-B Tax Rate

最初Nを1.08で割ってどうにかしようとしたのですが、頭がパーになってアーッアアアーッとなったので愚直に調べる方法になりました。
解説を見たら切り上げと切り捨てを使っててなるほどなーとなりました。

n=int(input())
res=0
 
for i in range(1,n+1):
    if int(i*1.08)==n:
        res=i
if res != 0:
    print(res)
else:
    print(":(")

5.ABC121-B Can you solve this?

愚直に全部計算しました。
解説も解法がどうこうというより実装の仕方が主でしたね。

n,m,c=map(int,input().split())
b=[int(i)for i in input().split()]
a=[[int(i)for i in input().split()]for j in range(n)]
res=0
for i in range(n):
    tmp=sum([a[i][j]*b[j]for j in range(m)])+c
    if tmp>0:
        res+=1
print(res)

#6.パナソニックプログラミングコンテスト2020-B Bishop
左上を(0,0)として各マスを(x,y)とすると、x+yが偶数のマスにしかビショップは移動できないです。
以上を踏まえて愚直に全探索したらTLEしました。

h,w=map(int,input().split())
canMove=sum([[(i+j)%2==0 for i in range(w)]for j in range(h)],[])
print(canMove.count(True))

よく見ると入力が$10^9$なんですね。なんて性格の悪い
そこで、x+yが偶数のマスにしか移動できないことに注目しました。
つまりh*w/2(端数切り上げ)を返せば良いわけですね。
また、hかwが1の場合、初期位置からまったく動かせないことを忘れてはいけません。私はこれでWAを出しました。

なんかこの問題はBっぽくない感じがしました。
全探索するとTLEしたりコーナーケースがあったり……。

from math import ceil
h,w=map(int,input().split())
ans=0
if h==1 or w==1:
    ans=1
else:
    ans=ceil(h*w/2)
print(ans)

7.ABC157-B Bingo

タテ、ヨコ、ナナメのそれぞれで全部出たかを調べれば良いですね。

def bingo():
    for i in a:
        if i[0] in b and i[1] in b and i[2] in b:
            return True
    for i in range(3):
        if a[0][i] in b and a[1][i] in b and a[2][i] in b:
            return True
    tmp=[(a[i][i] in b) for i in range(3)]
    if tmp.count(True)==3:
        return True
    tmp=[a[0][2] in b,a[1][1] in b,a[2][0] in b]
    if tmp.count(True)==3:
        return True
 
a=[[int(i)for i in input().split()]for j in range(3)]
n=int(input())
b=[int(input())for i in range(n)]
bingo=bingo()
print("Yes" if bingo else "No")

8.ABC086-B 1 21

aとbをつなげた数cが平方数ならその平方根dは整数になるので、dの端数を切り捨てた後2乗したものがcと一致するはずですね。
解説を見たら1000までループして全探索してましたが、316までで良いと思いました^2

a,b=input().split()
c=int(a+b)
d=int(c**0.5)
print("Yes" if d**2==c else "No")

9.ABC074-B Collecting Balls(Easy Version)

制約から各直線y=i(1<=i<=N)上は

ロボA---ボール---ロボB

という感じになるので、i番目のボールを回収するコスト$c_i$は$2x_i$か$2(K-x_i)$のうち小さいほうを求めて、それを全部足せば良いと考えました。

n=int(input())
k=int(input())
x=[int(i)for i in input().split()]
cost=sum([min(i,k-i)*2 for i in x])
print(cost)

10.ABC088-B Card Game for Two

最初、アリスとボブの得点を求めてたんですが、よくよく考えたら変数は1つで充分でした。
降順にソートしてi番目(1<=i<=n)のカードのカードの数を、iが奇数なら
足して偶数なら引けば良いんですね。
以下のコードはiが0-indexedだし昇順ソートで後ろから取ってます。

n=int(input())
a=sorted([int(i)for i in input().split()])
res=0
for i in range(n):
    tmp=a.pop(-1)
    if i%2==0:
        res+=tmp
    else:
        res-=tmp
print(res)

#おわりに
やっぱり6だけおかしくない???????

  1. 公式の解説に乗ってるやつのこと

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?