[SWEA] 1209_sum

김태민·2021년 8월 21일
2

알고리즘

목록 보기
2/77

Mingssssss

1. 문제

2021.08.11

다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라.

다음과 같은 5X5 배열에서 최댓값은 29이다.

[제약 사항]

총 10개의 테스트 케이스가 주어진다.

배열의 크기는 100X100으로 동일하다.

각 행의 합은 integer 범위를 넘어가지 않는다.

동일한 최댓값이 있을 경우, 하나의 값만 출력한다.

2. 코드

import sys
sys.stdin = open('input.txt')

TC = 10
for tc in range(1, TC+1):
    lst = []
    N = int(input())
    for i in range(100):
        sub_lst = list(map(int, input().split()))
        lst.append(sub_lst)

    result = 0

    for i in range(100):              # 열의 합
        max = 0
        for j in range(100):
            max += lst[i][j]

        if max > result:
            result = max
        
    for i in range(100):             # 행의 합
        max = 0
        for j in range(100):
            max += lst[j][i]

        if max > result:
            result = max

    max = 0

    for i in range(100):             # 대각선(\) 합
       max += lst[i][i]

    if max > result:
        result = max

    max = 0

    for i in range(100):             # 대각선(/) 합
        max += lst[i][99-i]

    if max > result:
        result = max



    print('#{0} {1}'.format(tc,result))

3. 리뷰

열과 행과 대각선 모두 2차원 배열을 이용해서 구했다. 포인트는 대각선/의 합인 것 같다.
배열의 크기가 100x100으로 동일하므로 이를 이용해서 lst[i][99-1] 을 이용해서 구하면 됐다.

profile
어제보다 성장하는 개발자

0개의 댓글