파이썬 알고리즘 문제풀이-Section 3(격자판 최대합)

dobyming·2022년 1월 19일
0
post-thumbnail

Q . 행,열,대각선들의 합 중 최댓값을 출력하는 프로그램을 작성하시오.
(조건)
1. 첫 줄에는 자연수 N을 입력한다.
2. N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다. (각 자연수는 100을 넘지 않는다.)

n = int(input("n*n 격자판에 해당하는 n을 입력하세요: "))
a = [list(map(int,input().split())) for _ in range(n)] #한 행이 통째로 리스트에 첨가됌

max = -2147000000 
for i in range(n): #i->행 j->열 
    sum1=0 #행의 합
    sum2=0 #열의 합
    for j in range(n):
        sum1+=a[i][j]
        sum2+=a[j][i]
if sum1>max:
    max = sum1
elif sum2>max:
    max = sum2 

#두 대각선의 합
csum1 = csum2 =0
for i in range(n):
    csum1+=a[i][i] #(1,1)->(2,2)->..->(5,5) 순서로 더함
    csum2+=a[i][n-i-1] #(5,5)->(4,4)->..->(1,1) 순서로 더함
if csum1>max:
    max = csum1
elif csum2>max:
    max = csum2  

print(max)

0개의 댓글