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 |