[SWEA] [1209] [Python]

냐항·2021년 8월 11일
post-thumbnail

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


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

[제약 사항]

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

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

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

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

[입력]

각 테스트 케이스의 첫 줄에는 테스트 케이스 번호가 주어지고 그 다음 줄부터는 2차원 배열의 각 행 값이 주어진다.

[출력]

#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.

처음 생각한 아이디어는 max 함수를 만들고 행, 열, 대각선에 적용하자였다.
하지만 리스트에 숫자들이 담길 것이라 생각했던 것과 달리 숫자들이 다 더해졌다.
그래서 한 번에 max_value를 쭈욱 수거하는 아이를 찾았다.

for tc in range(1, 11):
    N = int(input())
    TC = [list(map(int, input().split())) for _ in range(100)] # 2차원 리스트 받기
    max_value = 0


    for i in range(100):
        ans = 0  # 값 리셋
        for k in range(100):
            ans += TC[i][k]  # 행의 합 
        if ans > max_value:
            max_value = ans # 행의 합이 max보다 크면 max에 담기

    for i in range(100):
        ans = 0
        for k in range(100):
            ans += TC[k][i]
        if ans > max_value:
            max_value = ans
    ans = 0
    for i in range(100):
        ans += TC[i][i]
        if ans > max_value:
            max_value = ans
    ans = 0
    for i in range(100):
        ans += TC[i][99-i]
        if ans > max_value:
            max_value = ans

    print('#{} {}'.format(tc, max_value))

하나의 for문에 4개 모두를 담고 싶었지만 그러면 갚이 누적되더라.

for tc in range(1, 11):
    N = int(input())
    TC = [list(map(int, input().split())) for _ in range(100)]

    ans = 0

    for i in range(100):
        i_total = 0
        j_total = 0
        cross = 0
        cross2 = 0

        for j in range(100):
            i_total += TC[i][j]
            j_total += TC[j][i]

            if i == j:
                cross += TC[i][j]

            elif i + j == 99:
                cross2 += TC[i][j]


        if i_total > ans:
            ans = i_total
        if j_total > ans:
            ans = j_total
        if cross > ans:
            ans = cross
        if cross2 > ans:
            ans = cross2

    print('#{} {}'.format(tc, ans)),, 이런 방법이 있었군 
    한 번의 이중 for문에서 max값 찾는 방법!

0개의 댓글