강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

이민형님의 프로필 이미지
이민형

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

6. 격자판 최대합

격자판 최대합

작성

·

278

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열의 수들을 반환하는 것이 아닌지 궁금합니다.

퀴즈

회문 문자열(Palindrome)의 정의는 무엇일까요?

모든 문자가 동일한 문자열

앞에서부터 읽으나 뒤에서부터 읽으나 같은 문자열

알파벳과 숫자가 섞여 있는 문자열

특정 패턴이 반복되는 문자열

답변 1

0

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

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

 

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

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

 

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

이민형님의 프로필 이미지
이민형
질문자

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

이민형님의 프로필 이미지
이민형

작성한 질문수

질문하기