[SWEA] 1209. [S/W 문제해결 기본] 2일차 - Sum

야금야금 공부·2023년 4월 28일
0

SWEA

목록 보기
4/43
post-thumbnail

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV13_BWKACUCFAYh&categoryId=AV13_BWKACUCFAYh&categoryType=CODE&problemTitle=%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0+%EA%B8%B0%EB%B3%B8&orderBy=RECOMMEND_COUNT&selectCodeLang=PYTHON&select-1=3&pageSize=10&pageIndex=1


각 대각선의 합, 각 행의 합, 각 열의 합 중 최댓값을 구하는 문제

문제 풀이1

  • 이전에 풀었던 방식
for i in range(10):
    N = int(input())

    arr = []
    for _ in range(100):
        arr.append(list(map(int, input().split())))

    # 열의 합
    col = []
    max_col = 0
    for j in range(100):
        col.append(sum(arr[j]))

    max_col = max(col)


    # 행의 합
    row = []
    max_row = 0
    for j in range(100):
        row_sum = 0
        for k in range(100):
            row_sum += arr[k][j]
        row.append(row_sum)
        max_row = max(row)

  #  print(max_row)

    # 대각선의 합
    digo1_sum = 0
    digo1 = []
    for j in range(100):
        for k in range(100):
            if j == k:
                digo1_sum += arr[j][k]

        digo1.append(digo1_sum)

    # 대각선 합2
    digo2_sum = 0
    digo2 = []

    for j in range(100):
        for k in range(100):
            if i + k == 99:
                digo2_sum += arr[j][k]
        digo2.append(digo2_sum)

    result = [max_row, max_col, digo1_sum, digo2_sum]
    print(f"#{i+1} {max(result)}")

문제 풀이2

import sys
sys.stdin = open("input.txt", "r")


for i in range(1, 11):
    n = int(input())
    arr = [list(map(int, input().split())) for i in range(100)]
    sumlist = []           # 각 합들을 저장할 리스트

    for j in range(100):
        ans_row = 0        # 열의 합
        ans_col = 0        # 행의 합
        ans = 0            # 대각선의 합
        for k in range(100):
            ans_row += arr[k][j]
            ans_col += arr[j][k]
            sumlist.append(ans_row)
            sumlist.append(ans_col)

            if i == j:               # 오른쪽 밑으로 가는 대각선
                ans += arr[j][k]

            sumlist.append(ans)
            ans = 0
            
            if abs(i-j) == 100:      # 오른쪽 상단으로 가는 대각선
                ans += arr[i][j]

            sumlist.append(ans)


    print(f"#{i} {max(sumlist)}")

0개의 댓글