[알각코] 인프런 3-6 격자판 최대합

격자판 최대합

문제 정보는 인프런의 파이썬 알고리즘 문제풀이 코딩테스트에 있습니다!

문제풀이

N = int(input())
a = [list(map(int, input().split())) for _ in range(n)]
largest = - 2147000000
# a 리스트 안의 각 행 리스트를 불러옴
for i in range(n):
  sum1 = sum2 = 0
  for j in range(n):
    # 행의 총합
    sum1+= a[i][j]
    # 열의 총합
    sum2+= a[j][i]
  if sum1 > largest:
    largest = sum1
  if sum2 > largest:
    largest = sum2

sum1 = sum2 = 0

# 대각선 총합
for i in range(n):
  sum1 += a[i][i]
  sum2 += a[i][n-i-1]

if sum1 > largest:
  largest = sum1
if sum2 > largest:
  largest = sum2

return largest

리스트 컴프리헨션을 써서 2차원배열을 만들어서 가로 세로 합을 쉽게 구하고, 2차원배열을 활용해서 대각선 총합도 쉽게 구해서 문제를 해결하였다!