알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
문제
[다이아몬드 모양의 사과나무 합]
현수의 농장은 N*N 격자판으로 이루어져 있으며, 각 격자안에는 한 그루의 사과나무가 심어져 있다.
N의 크기는 항상 홀수이며, 가을이 되어 사과를 수확해야 하는데 현수는 격자판안의 사과를 수확할 때 다이아몬드
모양의 격자판만을 수확하고 나머지 격자안의 사과는 새들을 위해서 남겨놓는다.
만약 N이 5이면, 아래 그림과 같이 진한 부분의 사과를 수확한다.
현수가 수확하는 사과의 총 개수를 출력하는 프로그램을 작성하시오.
*입력 설명
첫 줄에 자연수 N(홀수)이 주어진다. (3 ≤ N ≤ 20)
두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어지며, 이 자연수는 각 격자안에 있는 사과나무에 열린 사과의
개수이다. (단, 각 격자안의 사과 개수는 100을 넘지 않음)
*출력 설명
수확한 사과의 총 개수를 출력합니다.
풀이(Python)
답안
import sys
sys.stdin = open('AA/input_17.txt', 'rt')
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)
# 출력 : 379
input_17.txt(입력)
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
중요내용
- 변수 res에는 다이아몬드 형태의 숫자를 모두 더한 값이 들어간다.
- 기본적으로 for문은 s부터 e까지 반복 실행되도록 만들어졌다.
'알고리즘' 카테고리의 다른 글
Algorithm - 봉우리 찾기 (0) | 2021.11.17 |
---|---|
Algorithm - 모래시계 모양의 합 (0) | 2021.11.17 |
Algorithm - 격자판 최대합 (0) | 2021.11.17 |
Algorithm - 수의 합 (0) | 2021.11.07 |
Algorithm - 두 리스트 합치기 (0) | 2021.11.07 |
댓글