Buggy python submission (verdict: Runtime Error):
# 初期入力
N = int(input())
import numpy as np
koufuku = np.array( [list(map(int, input().split())) for i in range(N)] ,dtype=int)
dp_ko = [0]*(N+1) 

dp_ko[0] = max( koufuku[0,:] ) , np.argmax(koufuku[0,:]) 

#
for i in range(N-1):
    
    tomorr_i = np.argmax(koufuku[i+1,:]) # 翌日の最大値のindex
    tomorr_ko = np.max(koufuku[i+1,:] ) # 翌日の最大値
    if tomorr_i != dp_ko[i][1]: # 翌日最大値のindex not 当日の保存していたindex(当日の最大値とは限らない)
        dp_ko[i+1] = dp_ko[i][0] + tomorr_ko , tomorr_i # 累積＋翌日の最大値 , 翌日のindex
    else:
        tomorr_no2 = np.sort( koufuku[i+1,:] )[-2] # 翌日2番目に大きい値
        tomorr_no2_i = koufuku[i+1,:].argsort()[-2] # 翌日2番目に大きい値のindex
        dp_ko[i+1] = dp_ko[i][0] + tomorr_no2 , tomorr_no2_i 

print(dp_ko[N-1][0])

Fixed submission:
"""
参考 Xenous
if sortを少なくし、maxで処理
""" 
# 初期入力
N = int(input())
a=[]
b=[]
c=[]
for i in range(N):
    a1,b1,c1 = (int(x) for x in input().split())
    
    a.append(a1)
    b.append(b1)
    c.append(c1)

dp_A = [0]*(N) ;dp_A[0] =a[0] 
dp_B = [0]*(N) ;dp_B[0] =b[0] 
dp_C = [0]*(N) ;dp_C[0] =c[0] 


#
for i in range(0,N-1):
    dp_A[i+1] = max(dp_B[i] + a[i+1] , dp_C[i] + a[i+1])
    dp_B[i+1] = max(dp_A[i] + b[i+1] , dp_C[i] + b[i+1])
    dp_C[i+1] = max(dp_A[i] + c[i+1] , dp_B[i] + c[i+1])
print(max (dp_A[N-1],dp_B[N-1],dp_C[N-1]) )

Buggy python submission (verdict: Time Limit Exceeded):
# 初期入力
N = int(input())
import numpy as np
koufuku = np.array( [list(map(int, input().split())) for i in range(N)] ,dtype=int)
dp_ko = [0]*(N+1) 

dp_ko[0] = max( koufuku[0,:] ) , np.argmax(koufuku[0,:]) 

#
for i in range(N-1):
    
    tomorr_i = np.argmax(koufuku[i+1,:]) # 翌日の最大値のindex
    tomorr_ko = np.max(koufuku[i+1,:] ) # 翌日の最大値
    if tomorr_i != dp_ko[i][1]: # 翌日最大値のindex not 当日の保存していたindex(当日の最大値とは限らない)
        dp_ko[i+1] = dp_ko[i][0] + tomorr_ko , tomorr_i # 累積＋翌日の最大値 , 翌日のindex
    else:
        tomorr_no2 = np.sort( koufuku[i+1,:] )[-2] # 翌日2番目に大きい値
        tomorr_no2_i = koufuku[i+1,:].argsort()[-2] # 翌日2番目に大きい値のindex
        dp_ko[i+1] = dp_ko[i][0] + tomorr_no2 , tomorr_no2_i 

print(dp_ko[N-1][0])

Fixed submission:
"""
参考 Xenous
if sortを少なくし、maxで処理
""" 
# 初期入力
N = int(input())
a=[]
b=[]
c=[]
for i in range(N):
    a1,b1,c1 = (int(x) for x in input().split())
    
    a.append(a1)
    b.append(b1)
    c.append(c1)

dp_A = [0]*(N) ;dp_A[0] =a[0] 
dp_B = [0]*(N) ;dp_B[0] =b[0] 
dp_C = [0]*(N) ;dp_C[0] =c[0] 


#
for i in range(0,N-1):
    dp_A[i+1] = max(dp_B[i] + a[i+1] , dp_C[i] + a[i+1])
    dp_B[i+1] = max(dp_A[i] + b[i+1] , dp_C[i] + b[i+1])
    dp_C[i+1] = max(dp_A[i] + c[i+1] , dp_B[i] + c[i+1])
print(max (dp_A[N-1],dp_B[N-1],dp_C[N-1]) )

Buggy python submission (verdict: Time Limit Exceeded):
# 初期入力
N = int(input())
import numpy as np
koufuku = np.array( [list(map(int, input().split())) for i in range(N)] ,dtype=int)
dp_ko_np = np.zeros((N,2),dtype=int) 
dp_ko_np[0,0] = max( koufuku[0,:] )
dp_ko_np[0,1] = np.argmax(koufuku[0,:]) 

#
for i in range(N-1):
    # 翌日最大値のindex not 当日の保存していたindex(前日があるので、当日の最大値とは限らない)
    tomorr_i = np.argmax(koufuku[i+1,:]) # 翌日の最大値のindex
    if tomorr_i != dp_ko_np[i,1]: 
        dp_ko_np[i+1,0] = dp_ko_np[i][0] + np.max(koufuku[i+1,:] ) # 累積＋翌日の最大値
        dp_ko_np[i+1,1] = np.argmax(koufuku[i+1,:]) # 翌日のindex
    else:
        dp_ko_np[i+1,0] = dp_ko_np[i][0] + np.sort( koufuku[i+1,:] )[-2] # 累積＋2番目に大きい値
        dp_ko_np[i+1,1] = koufuku[i+1,:].argsort()[-2] # 2番目に大きい値のindex

print(dp_ko_np[N-1,0])

Fixed submission:
"""
参考 Xenous
if sortを少なくし、maxで処理
""" 
# 初期入力
N = int(input())
a=[]
b=[]
c=[]
for i in range(N):
    a1,b1,c1 = (int(x) for x in input().split())
    
    a.append(a1)
    b.append(b1)
    c.append(c1)

dp_A = [0]*(N) ;dp_A[0] =a[0] 
dp_B = [0]*(N) ;dp_B[0] =b[0] 
dp_C = [0]*(N) ;dp_C[0] =c[0] 


#
for i in range(0,N-1):
    dp_A[i+1] = max(dp_B[i] + a[i+1] , dp_C[i] + a[i+1])
    dp_B[i+1] = max(dp_A[i] + b[i+1] , dp_C[i] + b[i+1])
    dp_C[i+1] = max(dp_A[i] + c[i+1] , dp_B[i] + c[i+1])
print(max (dp_A[N-1],dp_B[N-1],dp_C[N-1]) )