파이썬 알고리즘
SWEA 2805 농작물 수확하기
뜻 지, 깨달음 오
2022. 9. 12. 13:37
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이 key point
1)
마름모를 반으로 나눠서 0부터 1/2 지점까지 파란칸들의 합,
그리고 1/2지점 다음 칸들부터 끝까지의 합을 따로 구하려고 했다.
n = 5 일때랑 n=7인 경우 두개만 생각해봐도 법칙이 찾아진다.. 다행
T = int(input())
for tc in range(1, T+1):
n = int(input())
arr = [list(map(int, input())) for _ in range(n)
sum1 = 0
#앞쪽 반 숫자 더하기
for i in range((n//2)+1):
for j in range((n//2)-i, (n//2)+i+1):
sum1 += arr[j][i]
#뒤쪽 반 숫자 더하기
for s in range((n//2)+1, n):
for t in range(s-(n//2), n+(n//2)-s):
sum1 += arr[t][s]
print(f'#{tc} {sum1}')
코드 부분에서 주의할 점은
나는 x조건을 바깥쪽 for문에 먼저 써주고,
x에 영향받는 y좌표에 대한 조건을 안쪽 for문에 써줬기 때문에
sum1+= arr[j][i]로 i, j 순서를 바꿔서 써줘야한다