oniwan111’s blog

千葉大の学生が少しでも社会の役に立てればいいなと思って始めたブログです

AtCoder Beginner Contest 047 in Python A-C

ABC 047 A-Cまで解いてみました
最初からと最後からを解いてみています

これ、後ろに行けば行くほど難しくありませんか???笑
最初の方の問題だったらC問題もスラスラ解けるのに、B問題から結構つまずきました...

以下、解答です

A.

#prepare
f = True
List = []
#input
List = map(int,raw_input().split())

#evaluate
List.sort()

if not List[0]+List[1] == List[2]:
    f = False

#output
if f:
    print 'Yes'
else:
    print 'No'

B.

#prepare
L = []
Q = []

#input
W, H, N, = map(int,raw_input().split())
for i in range(N):
    L.append(map(int,raw_input().split()))
x1=0
x2=W
y1=0
y2=H

#calculate
Q = [row[2] for row in L]


for k in range(N):
    if Q[k] == 1:
        x1 = max(x1,L[k][0])
    elif Q[k] == 2:
        x2 = min(x2,L[k][0])
    elif Q[k] == 3:
        y1 = max(y1,L[k][1])
    elif Q[k] == 4:
        y2 = min(y2,L[k][1])

print max(0,x2-x1) * max(0,y2-y1)

C.

#prepare
cnt = 0
#input
S = raw_input()

#change to list
for i in range(len(S)-1):
    if S[i] != S[i+1]:
        cnt += 1
print cnt

今回学んだことは、Bのリスト内包表記です
これによって、二次元配列の列が取得出来ました
以下を参考にしました
qiita.com


(でも、AtCoderってnumpy使ってもいいのかも...?)
numpyだったら検索にだいぶ引っかかるのでそれでやったほうがいいかもしれません

C問題は完全にわかりませんでした笑
この解答は参考にさせていただきました、ありがとうございました

だいぶ実装は、早くできるようになってきました
あとは、考えられる頭があれば...笑