AtCoder Beginner Contest 119・125・132・134 A~C問題
前書き
AtCoder Beginner Contest 119・125・132・134 A~C問題を解きました。
A問題(ABC119)
- 難易度:灰
- 時間:2分
Y,M,D=map(str,input().split('/')) S=int(Y+M+D) if S<=20190430: print('Heisei') else: print('TBD')
B問題(ABC119)
- 難易度:灰
- 時間:5分
N=int(input()) _sum=0 for i in range(N): x,u=map(str,input().split()) if u=='JPY': _sum+=float(x) elif u=='BTC': _sum+=float(x)*380000.0 print(_sum)
B問題(ABC125)
- 難易度:灰
- 時間:3分
V[i]-C[i]>0となる時の差分(V[i]-C[i])を合計すれば、
X - Yの最大値を獲得できます。
N=int(input()) V=list(map(int,input().split())) C=list(map(int,input().split())) count=0 for i in range(N): if V[i]-C[i]>0: count+=V[i]-C[i] print(count)
A問題(ABC132)
- 難易度:灰
- 時間:7分(1WA)
アルファベットが2回"丁度"でなく2回"以上"を勘違いしてWAを出してしまいました。
import collections,sys S=list(input()) c = collections.Counter(S) for i in c.values(): if i!=2: print('No') sys.exit() print('Yes')
B問題(ABC132)
- 難易度:灰
- 時間:6分
i-1 , i , i+1番目で構成された配列の中央値を取得して、
配列pのi番目と一致すればカウントするというアルゴリズムを書きます。
import statistics n=int(input()) p=list(map(int,input().split())) count=0 for i in range(1,n-1): if p[i]==statistics.median(p[i-1:i+2]): count+=1 print(count)
C問題(ABC132)
- 難易度:灰
- 時間:6分
入力値をソートして、(N/2-1)番目と(N/2)番目要素の差がそのまま閾値Kのパターンになります。
N=int(input()) d=list(map(int,input().split())) d.sort() print(d[int(N/2)]-d[int(N/2)-1])
B問題(ABC134)
- 難易度:灰
- 時間:3分
import math N,D=map(int,input().split()) print(math.ceil(N/(D*2+1)))
C問題(ABC134)
- 難易度:灰
- 時間:7分
入力数値の中で最大値と2番目に大きな値(最大値と同値でもOK)を保存します。
j番目の入力が最大値と等しい場合、2番目に大きな値を出力します。
最大値が複数ある場合、2番目に大きな値=最大値なので、問題ありません。
N=int(input()) _max,_secmax=0,0 A=[int(input())for i in range(N)] for a in A: if a>=_max: _secmax=_max _max=a elif a>=_secmax: _secmax=a for j in range(N): if A[j]==_max: print(_secmax) else: print(_max)