りんごの木


作成日:2022年1月13日午後6時15分

インプリメンテーションコード

# 사과나무(다이아몬드)
import sys
sys.stdin = open("in2.txt", "rt")
n = int(input())
farm = [list(map(int,input().split())) for _ in range(n)]
mid = n // 2
total = 0
i = 0

for x in range(0, n):
    if x < mid:
        total += sum(farm[x][mid-i:mid+i+1])
        i+=1
    else:
        total += sum(farm[x][mid-i:mid+i+1])
        i-=1
print(total)

母の答え

import sys
sys.stdin = open("input.txt", 'r')
n=int(input())
a=[list(map(int, input().split())) for _ in range(n)]
res=0
s=e=n//2
for i in range(n):
    for j in range(s, e+1):
        res+=a[i][j]
    if i<n//2:
        s-=1
        e+=1
    else:
        s+=1
        e-=1
print(res)

差異

  • 私が実装したコードでは、Pythonのリスト機能を利用してダイヤモンドの形でカットし、写真の該当部分でマージする構造です.
  • 模範解答では、sとeを変数として、切り出す部分の始点と終点インデックスを格納し、nの半分以上でsが1マス減少し、eが増加する構造で、nより大きい半分(底)でsが増加し、eが減少し、ダイヤモンド形状が得られる.