atcoder (abc301) B-Fill the Gaps 間違いと正解例

atcoder.jp

・間違いの解答。insertを使うとインデックスがずれてうまくいかない。

N=int(input())
A=list(map(int,input().split()))

for i in range(N-1):
  da=abs(A[i]-A[i+1])
  if da!=1:
    if A[i]<A[i+1]:
      for j in range(1,da):
        A.insert(i+j,A[i]+j)
    else:
      for k in range(1,da):
      	A.insert(i+k,A[i]-k)

print(*A)

・正解例。ansというリストを作りそれにappendしていく。インデックスがずれない。

N=int(input())
A=list(map(int,input().split()))

ans=[]


for i in range(N-1):
  da=abs(A[i]-A[i+1])
  if da!=1:
    ans.append(A[i])
    if A[i]<A[i+1]:
      for j in range(1,da):
      	ans.append(A[i]+j)
    else:
      for k in range(1,da):
      	ans.append(A[i]-k)
  elif da==1:
    ans.append(A[i])
ans.append(A[N-1])
print(*ans)