본문 바로가기
알고리즘

Algorithm - 다이아몬드 모양의 합

by DGK 2021. 11. 17.

 

알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

문제

[다이아몬드 모양의 사과나무 합]

 

현수의 농장은 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

 

 

중요내용

  1. 변수 res에는 다이아몬드 형태의 숫자를 모두 더한 값이 들어간다.
  2. 기본적으로 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

댓글