다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라.
다음과 같은 5X5 배열에서 최댓값은 29이다.
[제약 사항]
총 10개의 테스트 케이스가 주어진다.
배열의 크기는 100X100으로 동일하다.
각 행의 합은 integer 범위를 넘어가지 않는다.
동일한 최댓값이 있을 경우, 하나의 값만 출력한다.
[입력]
각 테스트 케이스의 첫 줄에는 테스트 케이스 번호가 주어지고 그 다음 줄부터는 2차원 배열의 각 행 값이 주어진다.
[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.
def maxSum(data):
res = 0
# 가로 세로 최대
row_max = 0 # 행 최대
col_max = 0 # 열 최대
for i in range(100):
sumA = 0
sumB = 0
for j in range(100):
sumA += data[i][j]
sumB += data[j][i]
row_max = max(row_max, sumA)
col_max = max(col_max, sumB)
# 대각선 최대
d1_max = 0
d2_max = 0
for i in range(100):
d1_max += data[i][i]
d2_max += data[i][100-i-1]
return max(row_max, col_max, d1_max, d2_max)
T = 10
for t in range(1,T+1):
ss = int(input())
data = [list(map(int ,input().split())) for _ in range(100)]
MAX = maxSum(data)
print(f"#{t} {MAX}")
해당 문제는 그냥 있는 그대로 구현. 가로 세로 대각선 따로 구해서 최댓값 찾으면 됐음.