ABC066 をPythonで解く

atcoder.jp

A~Cを解いた。

A

A = [int(a) for a in input().split()]
ans = sum(A)-max(A)
print(ans)

 

B

いままではif文で処理していた最大値部分をm = max(m,xxx))と書いている人がいたので真似してみた。当たり前と言われればそれまでだがスマートな書き方だと思う。

S =input()
m = 0
for i,s in enumerate(S):
    tmp = S[:-1-i]
    tmp1 = tmp[:len(tmp)//2]
    tmp2 = tmp[len(tmp)//2:]
    if len(tmp)%2==0 and(tmp1==tmp2):
        m = max(m,len(tmp))
print(m)

C

listに対してinsertとappendを行うとTLE。
初めてdequeを使った。listの中身を1行で表示するのはjoinを使うと一発だが毎回検索しているのでそろそろ覚えたい。

N = int(input())
A = input().split()
from collections import deque

tmp = deque([])
for i,a in enumerate(A):
    if i %2!=0:
        tmp.appendleft(a)
    else:
        tmp.append(a)
if N%2!=0:
    tmp.reverse()
print(' '.join(tmp))