[문제설명]
구현문제 for문의 구간 활용
[문제 사과나무 (다이아몬드)]
현수의 농장은 N*N 격자판으로 이루어져 있으며, 각 격자안에는 한 그루의 사과나무가 심어져있다. N의 크기는 항상 홀수있다. 가을이 되어 사과를 수확해야 하는데 현수는 격자판 안의 사과를 수확할 때 다이아몬드 모양의 격자판만 수확하고 나머지 격자 안의 사과는 새들을 위해서 남겨놓는다.
만약 N이 5이면 아래 그림과 같이 진한 부분의 사과를 수확한다.
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19
현수가 수확하는 사과의 총 개수를 출력하세요
-입력설명
첫 줄에 자연수 N(홀수)이 주어진다. (3<=N<=20)
두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다.
-출력설명
수확한 사과의 총 개수를 출력합니다.
-입력예제1
5
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19
-출력예제1
379
[풀이]
5*5
s=e=n//2 (2)
01234
0행의 2열 값, s=2 e=2
1행의 123열의 값, s=1 e=3
2행의 01234열의 값, s=0 e=4
4행의 123열의 값, s=1 e=3
5행의 2열의 값, s=2 e=2
7*7 이면 색칠해야하는 열이
0 1 2 3 4 5 6 (인덱스 번호)
1 1 1 1 1 1 1 0행의 3열, s=3 e=3
1 1 1 1 1 1 1 1행의 234열, s=2 e=4
1 1 1 1 1 1 1 2행의 12345열, s=1 e=5
1 1 1 1 1 1 1 3행의 0123456열, s=0 e=6
1 1 1 1 1 1 1 4행의 12345열, s=1 e=5
1 1 1 1 1 1 1 5행의 234열, s=2 e=4
1 1 1 1 1 1 1 6행의 3열, s=3 e=3
[코드]
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
a=[list(map(int, input().split())) for _ in range(n)]
res=0
s=e=n//2
for i in range(n):
for j in range(s, e+1):
res+=a[i][j]
if i<n//2:
s-=1
e+=1
else:
s+=1
e-=1
print(res)
*본 문제는 인프런 김태원 강사님의 파이썬 알고리즘 문제풀이 강의에 기반합니다.
'알고리즘? > 기본3 탐색&시뮬레이션(string, 1차원 2차원 리스트 탐색)' 카테고리의 다른 글
9. 봉우리 (0) | 2023.05.11 |
---|---|
8. 곶감(모래시계) pop(),append(), 7번문제 응용 (0) | 2023.05.10 |
6. 격자판 최대합 (1) | 2023.05.10 |
5. 수들의 합 (0) | 2023.05.09 |
4. 두 리스트 합치기 (0) | 2023.05.09 |