강의

멘토링

커뮤니티

Inflearn Community Q&A

minhyung01239529's profile image
minhyung01239529

asked

Introduction to Python Algorithm Problem Solving (Coding Test Preparation)

6. Maximum grid sum

격자판 최대합

Written on

·

273

0

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


n = int(input())
mat = [list(map(int, input().split())) for _ in range(n)]

print(mat)
print(mat[0])
print(mat[:][0])
tot = -2147000000

# 행의 합 비교
for i in range(n):
    tmp = sum(mat[i])
    if tmp > tot:
        tot = tmp

# 열의 합 비교
for i in range(n):
    tmp = sum(mat[:][i])
    if tmp > tot:
        tot = tmp

# 대각선의 합 비교
tmp = 0
for i in range(n):
    tmp += mat[i][i]
if tmp > tot:
    tot = tmp
tmp = 0
for i in range(n):
    tmp += mat[i][n-1-i]
if tmp > tot:
    tot = tmp

print(tot)

위와 같이 코드를 작성해봤는데 5번 문제만 틀렸다고 나왔습니다.

그래서 원인을 찾아봤는데

행의 합을 구하기 위해 사용한 mat[i]와 열의 합을 구하기 위해 사용한 mat[:][i]의 값이 같다고 나왔습니다.

mat[:][i]를 사용하면 i열의 수들을 반환하는 것이 아닌지 궁금합니다.

python코테 준비 같이 해요!

Answer 1

0

안녕하세요. 제가 선생님은 아니지만.. 혹시 도움이 될까 해서 댓글 남겨 봅니다. 

리스트의 [:] 는 어떤 범위를 지정하여 부분 집합 처럼 따로 잘라오는 것 입니다 (참고 : https://dojang.io/mod/page/view.php?id=2208) 

 

지금 같이 아무 숫자도 넣지 않은 경우에는 전체 영역을 말하는 것이 됩니다. 

그러니까 mat[:] 의 0번째 와 mat의 0번째 리스트는 같은 것 을 말하는 것 입니다. 

 

열의 합을 구하려면 for문을 한번 더 쓰셔야 할 것 같습니다. 

array 형태랑 헷갈렸나봐요. 답변 감사합니다~

minhyung01239529's profile image
minhyung01239529

asked

Ask a question