https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB
풀이 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 순서를 바꿔서 써줘야한다
'파이썬 알고리즘' 카테고리의 다른 글
SWEA 1221 GNS (0) | 2022.09.16 |
---|---|
SWEA 4861 회문 (0) | 2022.09.16 |
SWEA 13704 달팽이 숫자 (0) | 2022.09.07 |
SWEA 13565 전기버스 (0) | 2022.09.07 |
SWEA 13569 그래비티 풀이 (1) | 2022.09.07 |