Mingssssss
2021.08.11
다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라.
다음과 같은 5X5 배열에서 최댓값은 29이다.
[제약 사항]
총 10개의 테스트 케이스가 주어진다.
배열의 크기는 100X100으로 동일하다.
각 행의 합은 integer 범위를 넘어가지 않는다.
동일한 최댓값이 있을 경우, 하나의 값만 출력한다.
import sys
sys.stdin = open('input.txt')
TC = 10
for tc in range(1, TC+1):
lst = []
N = int(input())
for i in range(100):
sub_lst = list(map(int, input().split()))
lst.append(sub_lst)
result = 0
for i in range(100): # 열의 합
max = 0
for j in range(100):
max += lst[i][j]
if max > result:
result = max
for i in range(100): # 행의 합
max = 0
for j in range(100):
max += lst[j][i]
if max > result:
result = max
max = 0
for i in range(100): # 대각선(\) 합
max += lst[i][i]
if max > result:
result = max
max = 0
for i in range(100): # 대각선(/) 합
max += lst[i][99-i]
if max > result:
result = max
print('#{0} {1}'.format(tc,result))
열과 행과 대각선 모두 2차원 배열을 이용해서 구했다. 포인트는 대각선/의 합인 것 같다.
배열의 크기가 100x100으로 동일하므로 이를 이용해서 lst[i][99-1]
을 이용해서 구하면 됐다.