사과나무(다이아몬드)

이세진·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개의 댓글

관련 채용 정보