SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
N X N크기의 농장이 있다.
이 농장에는 이상한 규칙이 있다.
규칙은 다음과 같다.
① 농장은 크기는 항상 홀수이다. (1 X 1, 3 X 3 … 49 X 49)
② 수확은 항상 농장의 크기에 딱 맞는 정사각형 마름모 형태로만 가능하다.
1 X 1크기의 농장에서 자라는 농작물을 수확하여 얻을 수 있는 수익은 3이다.
3 X 3크기의 농장에서 자라는 농작물을 수확하여 얻을 수 있는 수익은 16 (3 + 2 + 5 + 4 + 2)이다.
5 X 5크기의 농장에서 자라는 농작물의 수확하여 얻을 수 있는 수익은 25 (3 + 2 + 1 + 1 + 2 + 5 + 1 + 1 + 3 + 3 + 2 + 1)이다.
농장의 크기 N와 농작물의 가치가 주어질 때, 규칙에 따라 얻을 수 있는 수익은 얼마인지 구하여라.
제출 답안
T = int(input())
for test_case in range(1, T+1):
n = int(input())
arr = [list(map(int, list(input().strip()))) for i in range(n)]
mid = n//2
result = 0
for i in range(n):
if i <= mid:
result+=sum(arr[i][mid-i:mid+i+1])
else:
result += sum(arr[i][i-mid:mid-i])
print(f"#{test_case} {result}")
개선 답안
start, end 변수로 가리키기
T = int(input())
for tc in range(1, T+1):
N = int(input())
arr = [list(map(int, input())) for _ in range(N)]
s = e = M
for i in range(N):
for j in range(s, e+1):
ans += arr[i][j]
if i<M:
s -= 1
e += 1
else:
s += 1
e -= 1
print(f'#{tc} {ans}')
T = int(input())
for tc in range(1, T+1):
N = int(input())
arr = [list(map(int, input())) for _ in range(N)]
M = N//2
ans = 0
for i in range(N):
if i<=M:
for j in range(M-i, M+i+1):
ans += arr[i][j]
else:
for j in range(i-M, N-(i-M)):
ans += arr[i][j]
print(f'#{tc} {ans}')
참고 자료
[SWEA] 2805 - 농작물 수확하기 / Python / D3
D3
velog.io
https://www.youtube.com/watch?v=63h1cUX4eKY
'알고리즘 > Python' 카테고리의 다른 글
[Python | SWEA] 1215. [S/W 문제해결 기본] 3일차 - 회문1 (0) | 2023.05.07 |
---|---|
[Python | SWEA] 1289. 원재의 메모리 복구하기 (0) | 2023.05.07 |
[Python | SWEA] 1208. [S/W 문제해결 기본] 1일차 - Flatten (0) | 2023.05.06 |
[Python | SWEA] 1206. [S/W 문제해결 기본] 1일차 - View (0) | 2023.05.06 |
[Python | SWEA] 1974. 스도쿠 검증 (0) | 2023.05.06 |