初めてからの成長を見る AtCoder ABC 142

ABC 142は、自分が初めてやったAtCoderの実践です。

久しぶりにやってみて、昔と今の解法を比べてみるのも面白いかなぁと。

 

A
これが初めての私のコード、すごい冗長・・・

S = input()
if S == 'Sunny' :
	print('Cloudy')
	
elif S == 'Cloudy':
	print('Rainy')
else:
	print('Sunny')

今はこんな風に書きました、行数減ってるねぇ

S = {"Sunny":"Cloudy", "Cloudy":"Cloudy", "Cloudy":"Sunny"}
k = input()

print(S[k])

B
昔の自分はこう書きました。
シンプルではあるけど、なんだこのインテンドの数・・・

S = input()
k = 'Yes'

for i in range(len(S)):
	if i % 2 == 0:
		if S[i] == 'L':
			k = 'No'
			break 
	else:
		if S[i] == 'R':
			k = 'No'
			break
	
print(k)


今はこう書いてます

S = input()
result = 'Yes'
for i in range(1, len(S)+1):
  #print(i)
  if (i % 2 == 0 and S[i-1] == "R") or (i % 2 == 1 and S[i-1] == "L"):
      result = 'No'
      break
      
print(result)

C
過去の自分は、Cそもそも解けてませんでした
冷静に見てみれば何とかなりますね
1回ごとに全員の点数を計算すると計算量が大きくなってしまうので、
事前に全問不正解だった場合の点数を保持しておき、正解者だけ数値を減らしました(O(1)になるのかな?)
これによってLTEにならずにいけました

N, K, Q = map(int, input().split())
a = [-1*Q]*N
for i in range(Q):
  s = int(input())
  a[s-1] += 1

for i in a:
  #print(i)
  if K + i > 0:
    print("Yes")
  else:
    print("No")


昔から見れば、ある程度は成長しているみたい。。。。
悲観しすぎずに、ペースを上げていこうと思います!

以上