[인프런] 3-6 격자판 최대합 (파이썬)

Jewon Joel Park·2022년 5월 30일
0

문제 출처


문제 설명

NxN의 격자판이 주어질 때 각 행, 열, 두 대각선의 합 중 가장 큰 값을 출력하는 코드 작성


풀이 코드

import sys

n = int(input())
grid = [list(map(int, input().split())) for _ in range(n)]

largest = -sys.maxsize

dia1 = 0
dia2 = 0
for i in range(n):
    h = 0
    v = 0
    for j in range(n):
        h += grid[i][j]
        v += grid[j][i]
    largest = max(largest, v, h)
    dia1 += grid[i][i]
    dia2 += grid[i][n-1-i]
largest = max(dia1, dia2, largest)

print(largest)

코드 설명

  1. 가장 큰 값을 저장할 변수 largest에 int타입 최저값인 -sys.maxsize 부여, 각 대각선 숫자들의 합을 저장할 변수 dia1, dia2 설정
  2. 2단 for Loop을 구성하여 행의 합(v)과 열의 합(h)을 합산하고, 매 행이 수행될 때마다 최대값을 갱신함
  3. 대각선은 행-열 인덱스가 같을 때 우하향함을 이용, 열 인덱스에 n-1-i값을 부여하여 두번째 대각선은 좌하향하며 덧셈연산을 수행하도록 설정
  4. 최종적으로 행-열의 최대값이 저장된 largest와 우하향 대각선 dia1, 좌하향 대각선 dia2에 저장된 값 중 가장 큰 값을 저장하여 출력
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글