사과나무(다이아몬드)

이세진·2022년 4월 15일
0

코테준비

목록 보기
17/87

생성일: 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)

차이점

  • 내가 구현한 코드에서는 파이썬의 리스트 기능을 이용하여 다이아몬드 모양만큼 잘라내여 해당 부분만큼 합하는 구조이다.
  • 모범 답안에서는 s와 e라는 변수로 잘라낼 부분의 시작점과 끝 지점 인덱스를 저장하고 n의 절반보다 위쪽에서는 s는 한칸씩 줄이고 e는 늘리는 구조로, n의 절반보다 큰쪽(아래쪽)에서는 s는 늘리고 e는 줄이는 식으로 다이아몬드 모양을 구하였다.
profile
나중은 결코 오지 않는다.

0개의 댓글