본문 바로가기
코딩테스트/풀이

[코딩 테스트] 격자판 최대합 파이썬

by Yikanghee 2022. 2. 4.
  • 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]로 왼쪽으로 향하는 대각선을 구하면 된다
  • 그 뒤에 최종적으로 합을 비교하면 완성!

댓글