- N*N의 격자판이 주어지면 각 행의합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 출력하시오
n = int(input())
a = [list(map(int, input().split())) for _ in range(n)]
largest = -2147000000
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
print(largest)
- 먼저 2차원 배열을 만들어야하는데 list를 선언할때 for문을 넣어서 담으면
[ [ x,x,x,x,x], [x,x,x,x,x] ] 형식으로 담기게된다
- 만약 for문을 사용하지 않으면
[ [x,x,x,x,x,x,x,x,x,x,x,x,x,x] 형식으로 담기게 된다
- 처음으로 for문을 돌릴때 각 행과 열의 최댓값을 구해야 한다
- 이중 for문으로 처리하고, 각 열의 합 행의 합을 비교해서 최댓값을 구한다
- 다음으로 대각선의 합을 구해야한다
- [i][i]를 사용해서 오른쪽으로 향하는 대각선을 구하고, a[i][n-i-1]로 왼쪽으로 향하는 대각선을 구하면 된다
- 그 뒤에 최종적으로 합을 비교하면 완성!
'코딩테스트 > 풀이' 카테고리의 다른 글
[코딩 테스트]곳감 (모래시계) 파이썬 (0) | 2022.02.04 |
---|---|
[코딩 테스트] 다이아몬드 합 구하기 (0) | 2022.02.04 |
[코딩 테스트] 수의 합 구하기 파이썬 (0) | 2022.02.04 |
[코딩 테스트] 프로그래머스 정수 제곱근 판별 (0) | 2022.02.04 |
[코딩 테스트] 프로그래머스 완주하지 못한 선수 파이썬 (0) | 2022.01.31 |
댓글