Algorithm/SW Expert Academy

[Python] 1209. sum

느낌표 공장장 2021. 8. 11. 17:46

처음 코드 

# 10개의 테스트 케이스 
for idx in range(1, 11):
    n = int(input())
    # 정사각형 안의 요소들 받아오기 
    board = [list(map(int, input().split())) for _ in range(100)]

    diagonal_t = 0 # 대각선 합 
    r_diagonal_t = 0 # 반대편 대각선 합 
    total = [] # 합들을 담을 리스트 
    for i in range(100):
        column_t = 0
        for j in range(100):
            column_t += board[j][i]

            if i==j:
                diagonal_t += board[i][j]
                r_diagonal_t += board[i][99-j]


        total.extend([column_t, sum(board[i])])

    total.extend([diagonal_t, r_diagonal_t])

    print('#{} {}'.format(idx, max(total)))

 

* 조금 손본 코드

리스트 안쓰고 조건문 만족하면 변수에 새 값 할당하는 식.

그리고 대각선은 i j 두 값을 이용하지 않고 하나만 쓰면 되니까 마지막 for문 안에 넣어주지 않았다. 

# 10개의 테스트 케이스
for idx in range(1, 11):
    n = int(input())
    # 정사각형 안의 요소들 받아오기
    board = [list(map(int, input().split())) for _ in range(100)]

    diagonal_t = 0 # 대각선 합
    r_diagonal_t = 0 # 반대편 대각선 합
    max_col = 0 # 최대 열의 합
    max_row = 0 # 최대 행의 합
    total = [] # 합들을 담을 리스트

    for i in range(100):
        # 대각선 값 더해주기
        # (대각선의 방향은 상관없지만 그림대로 짜보았다)
        diagonal_t += board[i][i] # 좌상 -> 우하
        r_diagonal_t += board[i][99 - i] # 우상 -> 좌하

        # 매 column 합 담을 변수
        column_t = 0
        for j in range(100):
            # column 더하기
            column_t += board[j][i]

        # 이전의 열 또는 행 보다 크다면 해당 값 저장
        max_col = column_t if column_t > max_col else max_col
        max_row = sum(board[i]) if sum(board[i]) > max_row else max_row

    # 4가지 라인 중, 가장 합이 큰 값 출력
    print('#{} {}'.format(idx, max(max_col, max_row, diagonal_t, r_diagonal_t)))

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 1210. ladder1  (0) 2021.09.06
[Python] 1954. 달팽이 숫자  (0) 2021.08.11
[Python] 1208. Flatten  (0) 2021.08.11
[Python] 4831. 전기버스  (0) 2021.08.10
[Python] 4835. 구간합  (0) 2021.08.10