문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 풀이
- 마름모 형태로 덧셈을 진행해나가기 위해 먼저 길이의 중간값을 구한다.
- 마름모의 모양은 대칭형태 이므로, 중간값까지 for문을 돌면서 현재 행의 더해줘야 하는 값들과 대칭되는 행의 값들을 같이 더해나간다.
- 열의 값은 가운데 위치에서 for문 내 i값 만큼 빼고 더한 값을 구해 그 범위만큼 연산한다.
- 위 연산 수행 중 중간값이 두 번 더해졌으므로, 모든 값들을 더한 값에서 가운데 행의 모든 값들을 더한 값을 빼준 후, 형식에 맞게 출력한다.
코드
t = int(input())
for tc in range(t):
n = int(input())
array = [list(map(int,input())) for _ in range(n)]
# 대칭되므로 윗부분을 중심으로 대칭되는 아랫값들 같이 더하기
mid = n // 2
result = 0
for i in range(mid + 1):
for j in range(mid - i, mid + i + 1):
result += array[i][j] + array[n - i - 1][j]
# 가운데 값이 한 번 더 더해졌으므로, 빼주기
print(f'#{tc + 1}',result - sum(array[mid]))
'Algorithm > Simulation' 카테고리의 다른 글
| [Python] SWEA 1216번 회문2 (0) | 2023.05.15 |
|---|---|
| [Python] SWEA 1215번 회문1 (0) | 2023.05.11 |
| [Python] SWEA 1873번 상호의 배틀필드 (0) | 2023.05.10 |
| [Python] SWEA 1240번 단순 2진 암호코드 (0) | 2023.05.09 |
| [Python] SWEA 1208번 Flatten (0) | 2023.05.09 |