알고리즘/인프런: 파이썬 알고리즘 문제풀이
탐색&시뮬레이션 문제 #7. 사과나무
bearbrick
2022. 5. 28. 02:41
*이 풀이는 인프런: 파이썬 알고리즘 문제풀이 강좌에 기반하였습니다.
내 풀이
1. 먼저 가운데 행의 합을 구한다.
2. 그 후, 가운데 행을 기준으로 위아래 행에서 양끝을 하나씩 줄여나가면서 합을 구한다.
import sys
#sys.stdin=open("input.txt","rt")
n=int(input())
arr=[list(map(int, input().split())) for _ in range(n)]
middle=n//2
sum=0
for i in range(n):
sum+=arr[middle][i]
for i in range(1,middle+1):
for j in range(i,n-i):
sum+=arr[middle-i][j]
sum+=arr[middle+i][j]
print(sum)
강사님 풀이
import sys
sys.stdin=open("input.txt","rt")
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)
배운 점
1. 배열에서 시작점과 끝점을 의미하는 포인터를 둬서 범위를 지정하는 방법도 있다.