본문 바로가기

파이썬 알고리즘 풀이

16) 격자판 최대합

문제

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

 

조건

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

 

제한사항

첫 줄에 자연수 N이 주어진다.(1<=N<=50) 두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다.

 

각 자연수는 100을 넘지 않는다.

 

최대합을 출력합니다.

 

문제풀이

N=int(input())
a=[list(map(int, input().split())) for _ in range(N)]

ver=0
hor=0
f_diag=0
s_diag=0
arr=[]

for i in range(N):
  for j in range(N):
    hor+=a[i][j]
    ver+=a[j][i]

  arr.append(hor)
  hor=0
  arr.append(ver)
  ver=0
  
for i in range(N):
  f_diag+=a[i][i]
  s_diag+=a[i][N-i-1]

arr.append(f_diag)
arr.append(s_diag)

print(max(arr))

 

N=int(input())
a=[]
hor=0
ver=0
dia1=0
dia2=0
res=[]
for i in range(N):
  b=list(map(int, input().split()))
  a.append(b)

for x in a:
  res.append(sum(x))

for y in range(N):
  if ver!=0:
    res.append(ver)
    ver=0
  for x in a:
    ver+=x[y]

for x in range(N):
  for y in range(N):
    if x==y:
      dia1+=a[x][y]

for x in range(N):
  for y in range(N-1, -1, -1):
    if x+y==N-1:
      dia2+=a[x][y]

res.append(dia1)
res.append(dia2)

print(max(res))

'파이썬 알고리즘 풀이' 카테고리의 다른 글

18) 곳감(모래시계)  (0) 2021.10.22
17) 사과나무(다이아몬드)  (0) 2021.10.22
15) 수들의 합  (0) 2021.10.20
14) 두 리스트 합치기  (0) 2021.10.20
13) 카드 역배치(정올 기출)  (0) 2021.10.20