본문 바로가기

Algorithm/Python

016 - 격자판 최대합

5*5 격자판에 아래롸 같이 숫자가 적혀있습니다.

 

 

N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합 니다.

 

 

입력설명
첫 줄에 자연수 N이 주어진다.(1<=N<=50)
두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다. 각 자연수는 100을 넘지 않는 다.

 

출력설명

최대합을 출력합니다.

 

입력예제 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

155

 

 

n = int(input())
m = []
max = 0

# 값을 읽을때 아래와 같은 2가지 방법이 있다. 두번째는 컴프리헨션 방식.
# for i in range(n):
#     m.append(list(map(int, input().split())))
m = [list(map(int, input().split())) for _ in range(n)]

# 가로, 세로 읽기를 한번에 하자.
for i in range(n):
    tot1 = sum(m[i][0:n])
    tot2 = 0
    for j in range(n):
        # tot1 += m[i][j]  # sum 함수를 안쓰면 이렇게 처리.
        tot2 += m[j][i]
    if tot1 > max:
        max = tot1
    if tot2 > max:
        max = tot2
        
# 대각선 읽기, 컴프리헨션으로 처리
tot1 = sum([m[i][i] for i in range(n)])
tot2 = sum([m[n-1-i][i] for i in range(n)])
if tot1 > max:
    max = tot1
if tot2 > max:
    max = tot2

print(max)

'Algorithm > Python' 카테고리의 다른 글

018 - 곳감(모래시계) 합계  (0) 2023.08.08
017 - 사과나무 (다이아몬드) 합계  (0) 2023.08.08
015 - 수들의 합  (0) 2023.08.04
014 - 두 리스트 합치기  (0) 2023.08.04
013 - 카드 역배치  (0) 2023.08.03