문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do
문제
N X N크기의 농장이 있다.
이 농장에는 이상한 규칙이 있다.
규칙은 다음과 같다.
① 농장은 크기는 항상 홀수이다. (1 X 1, 3 X 3 … 49 X 49)
② 수확은 항상 농장의 크기에 딱 맞는 정사각형 마름모 형태로만 가능하다.
농장의 크기 N와 농작물의 가치가 주어질 때, 규칙에 따라 얻을 수 있는 수익은 얼마인지 구하여라.
[제약 사항]
농장의 크기 N은 1 이상 49 이하의 홀수이다. (1 ≤ N ≤ 49)
농작물의 가치는 0~5이다.

입력
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스에는 농장의 크기 N과 농장 내 농작물의 가치가 주어진다.
출력
각 줄은 '#t'로 시작하고, 공백으로 농장의 규칙에 따라 얻을 수 있는 수익을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
예제
입력
1
5
14054
44250
02032
51204
52212
출력
#1 23
정답 및 풀이
t = int(input())
for tc in range(1, t+1):
n = int(input())
arr = [list(map(int, input().strip())) for _ in range(n)]
mid = n // 2
total = 0
for i in range(n):
start = abs(mid - i)
end = n - start
for j in range(start, end):
total += arr[i][j]
print(f'#{tc} {total}')
t = int(input())- 테스트 케이스 개수를 입력받는다.
for tc in range(1, t+1):- 테스트 케이스 횟수만큼 반복하며, 출력 번호는 1부터 시작한다.
n = int(input())- 농장의 크기 n을 입력받는다. (n은 홀수이며 농장은 n×n이다.)
arr = [list(map(int, input().strip())) for _ in range(n)]- 문자열 형태로 들어오는 각 줄을 숫자로 변환하여 2차원 리스트로 만든다.
- 예)
"140"→[1, 4, 0]
mid = n // 2- 정가운데 행(또는 열) 인덱스를 구한다.
- 마름모의 중심 기준 계산에 사용된다.
total = 0- 수확한 농작물의 합계 저장 변수이다.
for i in range(n):- 각 행을 순회한다.
start = abs(mid - i)- 현재 행에서 수확을 시작할 열 인덱스를 계산한다.
- 중심에서 멀어질수록 시작점이 하나씩 늘어난다.
end = n - start- 현재 행에서 수확을 끝낼 열 인덱스를 계산한다.
- end는 포함하지 않는 범위이므로 (start ~ end-1)을 순회한다.
for j in range(start, end):- 해당 행에서 마름모 범위에 해당하는 열만 순회한다.
total += arr[i][j]- 마름모 범위의 값을 누적한다.
print(f'#{tc} {total}')- 테스트 케이스 번호와 함께 총합을 출력한다.
'SWEA' 카테고리의 다른 글
| [SWEA] 1240 : [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 (Python/파이썬) (0) | 2025.11.24 |
|---|---|
| [SWEA] 1209 : [S/W 문제해결 기본] 2일차 - Sum (Python/파이썬) (0) | 2025.11.24 |
| [SWEA] 1244 : [S/W 문제해결 응용] 2일차 - 최대 상금 (Python/파이썬) (0) | 2025.11.24 |
| [SWEA] 1208 : [S/W 문제해결 기본] 1일차 - Flatten (Python/파이썬) (0) | 2025.11.24 |
| [SWEA] 1206 : [S/W 문제해결 기본] 1일차 - View (Python/파이썬) (0) | 2025.11.24 |