[알고리즘] 격자판 최대합

인프런 코딩 테스트 준비

탐색 & 시뮬레이션

N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합
니다.

▣ 입력예제 1
5
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19

▣ 출력예제 1
155

< 내가 작성한 코드 >

from typing import List
import sys
sys.stdin = open("input.txt", "rt")
sums = []
arr = []
column = []
degak = []
degak2 = []


# sums.append(sum(map(int, input().split())))
def solution(N: int) -> int:
    # 행
    for i in range(N):
        arr.append(list(map(int, input().split())))
        sums.append(sum(arr[i]))
    # 열
    for j in range(N):
        column.append([])
        for k in range(N):
            column[j].append((arr[k][j]))
        sums.append(sum(column[j]))
    # 대각선
    for i in range(N):
        degak.append(arr[i][i])
        degak2.append(arr[(N-1)-i][i])
    sums.append(sum(degak))
    sums.append(sum(degak2))

    return max(sums)


print(solution(int(input())))

🧑🏻 후기

행 / 열 / 대각선으로 나누어 계산한 값중 가장 큰 값을 출력하였다.
기존에 [list(map(int,input().split())) for _ in range(N)] 을 통해 초기화 했으면
코드 줄 수를 조금 더 줄였을거 같다.

좋은 웹페이지 즐겨찾기