[Python-CodingTest] 3-6. 격자판 최대합
격자판 최대합
문제 정리
입력
5
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19
처리 과정
- 하나의 for문 안에서 행과 열의 최대합을 한번에 구하기
- 또다른 for문 안에서 두 대각선의 최대합을 한번에 구하기
- 최댓값 구하기
출력
155
내 답
import sys
sys.stdin = open("./input/in6-1.txt", "rt")
n=int(input())
board=[[0]*n for _ in range(n)]
for i in range(n):
board[i]=list(map(int, input().split()))
max=0
sum=0
# 각 행의 합
for i in range(n):
for j in range(n):
sum+=board[i][j]
if sum>max:
max=sum
sum=0
# 각 열의 합
for i in range(n):
for j in range(n):
sum+=board[j][i]
if sum>max:
max=sum
sum=0
# 대각선(\)의 합
for i in range(n):
sum+=board[i][i]
if sum>max:
max=sum
sum=0
# 대각선(/)의 합
for i in range(n):
sum+=board[n-i-1][i]
if sum>max:
max=sum
sum=0
print(max)
풀이
import sys
sys.stdin = open("./input/in6-1.txt", "rt")
n=int(input())
# 2차원 리스트로 입력 받기
lst=[list(map(int, input().split())) for _ in range(n)]
largest=-2147000000
# 행과 열의 최대합
for i in range(n):
sum1=sum2=0 # 각각 행의합, 열의합
for j in range(n):
sum1+=lst[i][j]
sum2+=lst[j][i]
if sum1>largest:
largest=sum1
if sum2>largest:
largest=sum2
# 대각선의 최대합
sum1=sum2=0
for i in range(n):
sum1+=lst[i][i]
sum2+=lst[n-i-1][i]
if sum1>largest:
largest=sum1
if sum2>largest:
largest=sum2
print(largest)
정리
- n행 n열의 2차원 리스트 입력받기:
lst=[list(map(int, input().split())) for _ in range(n)]
- 행과열, 두 대각선의 합을 한번에 (총 두번에) 구할 수 있다
💛 개인 공부 기록용 블로그입니다. 👻