[제약 사항]
총 10개의 테스트 케이스가 주어진다.
배열의 크기는 100X100으로 동일하다.
각 행의 합은 integer 범위를 넘어가지 않는다.
동일한 최댓값이 있을 경우, 하나의 값만 출력한다.

[입력]
각 테스트 케이스의 첫 줄에는 테스트 케이스 번호가 주어지고 그 다음 줄부터는 2차원 배열의 각 행 값이 주어진다.
[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.
처음 생각한 아이디어는 max 함수를 만들고 행, 열, 대각선에 적용하자였다.
하지만 리스트에 숫자들이 담길 것이라 생각했던 것과 달리 숫자들이 다 더해졌다.
그래서 한 번에 max_value를 쭈욱 수거하는 아이를 찾았다.
for tc in range(1, 11):
N = int(input())
TC = [list(map(int, input().split())) for _ in range(100)] # 2차원 리스트 받기
max_value = 0
for i in range(100):
ans = 0 # 값 리셋
for k in range(100):
ans += TC[i][k] # 행의 합
if ans > max_value:
max_value = ans # 행의 합이 max보다 크면 max에 담기
for i in range(100):
ans = 0
for k in range(100):
ans += TC[k][i]
if ans > max_value:
max_value = ans
ans = 0
for i in range(100):
ans += TC[i][i]
if ans > max_value:
max_value = ans
ans = 0
for i in range(100):
ans += TC[i][99-i]
if ans > max_value:
max_value = ans
print('#{} {}'.format(tc, max_value))
하나의 for문에 4개 모두를 담고 싶었지만 그러면 갚이 누적되더라.
for tc in range(1, 11):
N = int(input())
TC = [list(map(int, input().split())) for _ in range(100)]
ans = 0
for i in range(100):
i_total = 0
j_total = 0
cross = 0
cross2 = 0
for j in range(100):
i_total += TC[i][j]
j_total += TC[j][i]
if i == j:
cross += TC[i][j]
elif i + j == 99:
cross2 += TC[i][j]
if i_total > ans:
ans = i_total
if j_total > ans:
ans = j_total
if cross > ans:
ans = cross
if cross2 > ans:
ans = cross2
print('#{} {}'.format(tc, ans))
오,, 이런 방법이 있었군
한 번의 이중 for문에서 max값 찾는 방법!