-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
격자판 최대합
22.01.11 11:37 작성 조회수 149
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열의 수들을 반환하는 것이 아닌지 궁금합니다.
답변을 작성해보세요.
0
지희 남
2022.01.11
안녕하세요. 제가 선생님은 아니지만.. 혹시 도움이 될까 해서 댓글 남겨 봅니다.
리스트의 [:] 는 어떤 범위를 지정하여 부분 집합 처럼 따로 잘라오는 것 입니다 (참고 : https://dojang.io/mod/page/view.php?id=2208)
지금 같이 아무 숫자도 넣지 않은 경우에는 전체 영역을 말하는 것이 됩니다.
그러니까 mat[:] 의 0번째 와 mat의 0번째 리스트는 같은 것 을 말하는 것 입니다.
열의 합을 구하려면 for문을 한번 더 쓰셔야 할 것 같습니다.
답변 1